diff --git a/CODEOWNERS b/CODEOWNERS
index 90c3cb9af60..318d9f2c6de 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -8,6 +8,7 @@
/javascript/ @github/codeql-javascript
/python/ @github/codeql-python
/ruby/ @github/codeql-ruby
+/rust/ @github/codeql-rust
/swift/ @github/codeql-swift
/misc/codegen/ @github/codeql-swift
/java/kotlin-extractor/ @github/codeql-kotlin
@@ -41,6 +42,7 @@ MODULE.bazel @github/codeql-ci-reviewers
/.github/workflows/go-* @github/codeql-go
/.github/workflows/ql-for-ql-* @github/codeql-ql-for-ql-reviewers
/.github/workflows/ruby-* @github/codeql-ruby
+/.github/workflows/rust.yml @github/codeql-rust
/.github/workflows/swift.yml @github/codeql-swift
# Misc
diff --git a/Cargo.lock b/Cargo.lock
index 7719e26ffd2..f425373ceea 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -154,15 +154,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.8.0"
+version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]]
name = "borsh"
-version = "1.5.3"
+version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03"
+checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc"
dependencies = [
"cfg_aliases",
]
@@ -224,9 +224,9 @@ dependencies = [
[[package]]
name = "cargo_metadata"
-version = "0.18.1"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
dependencies = [
"camino",
"cargo-platform",
@@ -275,7 +275,7 @@ version = "0.100.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f114996bda14c0213f014a4ef31a7867dcf5f539a3900477fc6b20138e7a17b"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"chalk-derive",
]
@@ -301,7 +301,7 @@ dependencies = [
"chalk-derive",
"chalk-ir",
"ena",
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"itertools 0.12.1",
"petgraph",
"rustc-hash 1.1.0",
@@ -325,9 +325,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.32"
+version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83"
+checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
dependencies = [
"clap_builder",
"clap_derive",
@@ -335,9 +335,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.32"
+version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8"
+checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
dependencies = [
"anstream",
"anstyle",
@@ -622,7 +622,7 @@ version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5"
dependencies = [
- "log 0.4.25",
+ "log 0.4.27",
]
[[package]]
@@ -691,9 +691,9 @@ checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
[[package]]
name = "equivalent"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "figment"
@@ -781,7 +781,7 @@ checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd"
dependencies = [
"cfg-if",
"libc",
- "log 0.4.25",
+ "log 0.4.27",
"rustversion",
"windows",
]
@@ -812,7 +812,7 @@ checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
dependencies = [
"aho-corasick",
"bstr",
- "log 0.4.25",
+ "log 0.4.27",
"regex-automata 0.4.9",
"regex-syntax 0.8.5",
]
@@ -918,9 +918,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.7.0"
+version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
+checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
@@ -939,7 +939,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"inotify-sys",
"libc",
]
@@ -979,9 +979,9 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.14"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jod-thread"
@@ -1033,9 +1033,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
-version = "0.2.169"
+version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
+checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "libredox"
@@ -1043,7 +1043,7 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"libc",
"redox_syscall",
]
@@ -1074,14 +1074,14 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
dependencies = [
- "log 0.4.25",
+ "log 0.4.27",
]
[[package]]
name = "log"
-version = "0.4.25"
+version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "loom"
@@ -1096,12 +1096,6 @@ dependencies = [
"tracing-subscriber",
]
-[[package]]
-name = "lz4_flex"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
-
[[package]]
name = "matchers"
version = "0.1.0"
@@ -1142,7 +1136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
dependencies = [
"libc",
- "log 0.4.25",
+ "log 0.4.27",
"wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.52.0",
]
@@ -1178,13 +1172,13 @@ version = "8.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"filetime",
"fsevent-sys",
"inotify",
"kqueue",
"libc",
- "log 0.4.25",
+ "log 0.4.27",
"mio",
"notify-types",
"walkdir",
@@ -1240,9 +1234,9 @@ checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
[[package]]
name = "oorandom"
-version = "11.1.4"
+version = "11.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
[[package]]
name = "os_str_bytes"
@@ -1331,7 +1325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
]
[[package]]
@@ -1398,7 +1392,7 @@ version = "0.100.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1651b0f7e8c3eb7c27a88f39d277e69c32bfe58e3be174d286c1a24d6a7a4d8"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"ra-ap-rustc_hashes",
"ra-ap-rustc_index",
"tracing",
@@ -1470,18 +1464,16 @@ dependencies = [
[[package]]
name = "ra_ap_base_db"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4baa9734d254af14fd603528ad594650dea601b1764492bd39988da38598ae67"
+checksum = "8fd761118bbafe29e2b187e694c6b8e800f2c7822bbc1d9d2db4ac21fb8b0365"
dependencies = [
"dashmap 5.5.3",
"la-arena",
- "lz4_flex",
"ra_ap_cfg",
"ra_ap_intern",
"ra_ap_query-group-macro",
"ra_ap_span",
- "ra_ap_stdx",
"ra_ap_syntax",
"ra_ap_vfs",
"rustc-hash 2.1.1",
@@ -1493,9 +1485,9 @@ dependencies = [
[[package]]
name = "ra_ap_cfg"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ef2ba45636c5e585040c0c4bee640737a6001b08309f1a25ca78cf04abfbf90"
+checksum = "5ce74ce1af24afd86d3529dbbf5a849d026948b2d8ba51d199b6ea6db6e345b6"
dependencies = [
"ra_ap_intern",
"ra_ap_tt",
@@ -1505,20 +1497,20 @@ dependencies = [
[[package]]
name = "ra_ap_edition"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8955c1484d5e7274f755187788ba0d51eb149f870c69cdf0d87c3b7edea20ea0"
+checksum = "f423b9fb19e3920e4c7039120d09d9c79070a26efe8ff9f787c7234b07f518c5"
[[package]]
name = "ra_ap_hir"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a51d7955beff2212701b149bea36d4cf2dc0f5cd129652c9bcf0cb5c0b021078"
+checksum = "dd4aa8a568b80d288b90c4fa5dc8a3cc405914d261bfd33a3761c1ba41be358d"
dependencies = [
"arrayvec",
"either",
- "indexmap 2.7.0",
- "itertools 0.12.1",
+ "indexmap 2.9.0",
+ "itertools 0.14.0",
"ra_ap_base_db",
"ra_ap_cfg",
"ra_ap_hir_def",
@@ -1537,23 +1529,20 @@ dependencies = [
[[package]]
name = "ra_ap_hir_def"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5c97e617e4c585d24b3d4f668861452aedddfbe0262f4c53235dcea77e62f9b"
+checksum = "acb18d9378a828a23ccf87b89199db005adb67ba2a05a37d7a3fcad4d1036e66"
dependencies = [
"arrayvec",
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"cov-mark",
- "dashmap 5.5.3",
"drop_bomb",
"either",
"fst",
- "hashbrown 0.14.5",
- "indexmap 2.7.0",
- "itertools 0.12.1",
+ "indexmap 2.9.0",
+ "itertools 0.14.0",
"la-arena",
"ra-ap-rustc_abi",
- "ra-ap-rustc_hashes",
"ra-ap-rustc_parse_format",
"ra_ap_base_db",
"ra_ap_cfg",
@@ -1570,21 +1559,20 @@ dependencies = [
"salsa",
"smallvec",
"text-size",
+ "thin-vec",
"tracing",
"triomphe",
]
[[package]]
name = "ra_ap_hir_expand"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be57c0d7e3f2180dd8ea584b11447f34060eadc06f0f6d559e2a790f6e91b6c5"
+checksum = "094fa79d8f661f52cf3b7fb8b3d91c4be2ad9e71a3967d3dacd25429fa44b37d"
dependencies = [
"cov-mark",
"either",
- "hashbrown 0.14.5",
- "itertools 0.12.1",
- "la-arena",
+ "itertools 0.14.0",
"ra_ap_base_db",
"ra_ap_cfg",
"ra_ap_intern",
@@ -1605,24 +1593,22 @@ dependencies = [
[[package]]
name = "ra_ap_hir_ty"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f260f35748f3035b46a8afcdebda7cb75d95c24750105fad86101d09a9d387c8"
+checksum = "093482d200d5db421db5692e7819bbb14fb717cc8cb0f91f93cce9fde85b3df2"
dependencies = [
"arrayvec",
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"chalk-derive",
"chalk-ir",
"chalk-recursive",
"chalk-solve",
"cov-mark",
- "dashmap 5.5.3",
"either",
"ena",
- "indexmap 2.7.0",
- "itertools 0.12.1",
+ "indexmap 2.9.0",
+ "itertools 0.14.0",
"la-arena",
- "nohash-hasher",
"oorandom",
"ra-ap-rustc_abi",
"ra-ap-rustc_index",
@@ -1647,19 +1633,18 @@ dependencies = [
[[package]]
name = "ra_ap_ide_db"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0426263be26e27cb55a3b9ef88b120511b66fe7d9b418a2473d6d5f3ac2fe0a6"
+checksum = "b655b92dfa9444db8129321b9217d9e4a83a58ee707aa1004a93052acfb43d57"
dependencies = [
"arrayvec",
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
"cov-mark",
"crossbeam-channel",
- "dashmap 5.5.3",
"either",
"fst",
- "indexmap 2.7.0",
- "itertools 0.12.1",
+ "indexmap 2.9.0",
+ "itertools 0.14.0",
"line-index",
"memchr",
"nohash-hasher",
@@ -1681,9 +1666,9 @@ dependencies = [
[[package]]
name = "ra_ap_intern"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6ea8c9615b3b0688cf557e7310dbd9432f43860c8ea766d54f4416cbecf3571"
+checksum = "b4e528496b4d4c351806bb073d3d7f6526535741b9e8801776603c924bbec624"
dependencies = [
"dashmap 5.5.3",
"hashbrown 0.14.5",
@@ -1693,17 +1678,16 @@ dependencies = [
[[package]]
name = "ra_ap_load-cargo"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "570907e16725c13a678bfd8050ce8839af2831da042a0878b75ee8c41b0f7b0c"
+checksum = "1a97a5070b2f4b99f56683d91b2687aa0c530d8969cc5252ec2ae5644e428ffe"
dependencies = [
"anyhow",
"crossbeam-channel",
- "itertools 0.12.1",
+ "itertools 0.14.0",
"ra_ap_hir_expand",
"ra_ap_ide_db",
"ra_ap_intern",
- "ra_ap_paths",
"ra_ap_proc_macro_api",
"ra_ap_project_model",
"ra_ap_span",
@@ -1715,9 +1699,9 @@ dependencies = [
[[package]]
name = "ra_ap_mbe"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e893fe03b04b30c9b5a339ac2bf39ce32ac9c05a8b50121b7d89ce658346e164"
+checksum = "b187ee5ee3fa726eeea5142242a0397e2200d77084026986a68324b9599f9046"
dependencies = [
"arrayvec",
"cov-mark",
@@ -1726,19 +1710,17 @@ dependencies = [
"ra_ap_parser",
"ra_ap_span",
"ra_ap_stdx",
- "ra_ap_syntax",
"ra_ap_syntax-bridge",
"ra_ap_tt",
"rustc-hash 2.1.1",
"smallvec",
- "tracing",
]
[[package]]
name = "ra_ap_parser"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fd9a264120968b14a66b6ba756cd7f99435385b5dbc2f0a611cf3a12221c385"
+checksum = "2306e6c051e60483f3b317fac9dec6c883b7792eeb8db24ec6f39dbfa5430159"
dependencies = [
"drop_bomb",
"ra-ap-rustc_lexer",
@@ -1748,20 +1730,20 @@ dependencies = [
[[package]]
name = "ra_ap_paths"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f47817351651e36b56ff3afc483b41600053c9cb7e67d945467c0abe93416032"
+checksum = "dcedd00499621bdd0f1fe01955c04e4b388197aa826744003afaf6cc2944bc80"
dependencies = [
"camino",
]
[[package]]
name = "ra_ap_proc_macro_api"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d96da3b8b9f6b813a98f5357eef303905450741f47ba90adaab8a5371b748416"
+checksum = "7a2e49b550015cd4ad152bd78d92d73594497f2e44f61273f9fed3534ad4bbbe"
dependencies = [
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"ra_ap_intern",
"ra_ap_paths",
"ra_ap_span",
@@ -1776,9 +1758,9 @@ dependencies = [
[[package]]
name = "ra_ap_profile"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13637377287c84f88a628e40229d271ef0081c0d683956bd99a6c8278a4f8b14"
+checksum = "87cdbd27ebe02ec21fdae3df303f194bda036a019ecef80d47e0082646f06c54"
dependencies = [
"cfg-if",
"libc",
@@ -1788,13 +1770,13 @@ dependencies = [
[[package]]
name = "ra_ap_project_model"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053c5207a638fc7a752c7a454bc952b28b0d02f0bf9f6d7ec785ec809579d8fa"
+checksum = "5eaa3406c891a7840d20ce615f8decca32cbc9d3654b82dcbcc3a31257ce90b9"
dependencies = [
"anyhow",
"cargo_metadata",
- "itertools 0.12.1",
+ "itertools 0.14.0",
"la-arena",
"ra_ap_base_db",
"ra_ap_cfg",
@@ -1814,22 +1796,20 @@ dependencies = [
[[package]]
name = "ra_ap_query-group-macro"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f1a38f07b442e47a234cbe2e8fd1b8a41ff0cc5123cb1cf994c5ce20edb5bd6"
+checksum = "1fbc1748e4876a9b0ccfacfc7e2fe254f30e92ef58d98925282b3803e8b004ed"
dependencies = [
- "heck",
"proc-macro2",
"quote",
- "salsa",
"syn",
]
[[package]]
name = "ra_ap_span"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8818680c6f7da3b32cb2bb0992940b24264b1aa90203aa94812e09ab34d362d1"
+checksum = "ed1d036e738bf32a057d90698df85bcb83ed6263b5fe9fba132c99e8ec3aecaf"
dependencies = [
"hashbrown 0.14.5",
"la-arena",
@@ -1843,12 +1823,12 @@ dependencies = [
[[package]]
name = "ra_ap_stdx"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1c10bee1b03fc48083862c13cf06bd3ed17760463ecce2734103a2f511e5ed4"
+checksum = "6e3775954ab24408f71e97079a97558078a166a4082052e83256ae4c22dae18d"
dependencies = [
"crossbeam-channel",
- "itertools 0.12.1",
+ "itertools 0.14.0",
"jod-thread",
"libc",
"miow",
@@ -1858,14 +1838,12 @@ dependencies = [
[[package]]
name = "ra_ap_syntax"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92bc32f3946fc5fcbdc79e61b7e26a8c2a3a56f3ef6ab27c7d298a9e21a462f2"
+checksum = "b49b081f209a764700f688db91820a66c2ecfe5f138895d831361cf84f716691"
dependencies = [
- "cov-mark",
"either",
- "indexmap 2.7.0",
- "itertools 0.12.1",
+ "itertools 0.14.0",
"ra-ap-rustc_lexer",
"ra_ap_parser",
"ra_ap_stdx",
@@ -1878,9 +1856,9 @@ dependencies = [
[[package]]
name = "ra_ap_syntax-bridge"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a42052c44c98c122c37aac476260c8f19d8fec495edc9c05835307c9ae86194d"
+checksum = "f2740bbe603d527f2cf0aaf51629de7d072694fbbaaeda8264f7591be1493d1b"
dependencies = [
"ra_ap_intern",
"ra_ap_parser",
@@ -1889,14 +1867,13 @@ dependencies = [
"ra_ap_syntax",
"ra_ap_tt",
"rustc-hash 2.1.1",
- "tracing",
]
[[package]]
name = "ra_ap_toolchain"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75996e70b3a0c68cd5157ba01f018964c7c6a5d7b209047d449b393139d0b57f"
+checksum = "efbff9f26f307ef958586357d1653d000861dcd3acbaf33a009651e024720c7e"
dependencies = [
"camino",
"home",
@@ -1904,9 +1881,9 @@ dependencies = [
[[package]]
name = "ra_ap_tt"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4ee31e93bfabe83e6720b7469db88d7ad7ec5c59a1f011efec4aa1327ffc5c"
+checksum = "0b1ce3ac14765e414fa6031fda7dc35d3492c74de225aac689ba8b8bf037e1f8"
dependencies = [
"arrayvec",
"ra-ap-rustc_lexer",
@@ -1917,13 +1894,13 @@ dependencies = [
[[package]]
name = "ra_ap_vfs"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6aac1e277ac70bb073f40f8a3fc44e4b1bb9e4d4b1d0e0bd2f8269543560f80"
+checksum = "29427a7c27ce8ddfefb52d77c952a4588c74d0a7ab064dc627129088a90423ca"
dependencies = [
"crossbeam-channel",
"fst",
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"nohash-hasher",
"ra_ap_paths",
"ra_ap_stdx",
@@ -1933,9 +1910,9 @@ dependencies = [
[[package]]
name = "ra_ap_vfs-notify"
-version = "0.0.270"
+version = "0.0.273"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd95285146049621ee8f7a512c982a008bf036321fcc9b01a95c1ad7e6aeae57"
+checksum = "d5a0e3095b8216ecc131f38b4b0025cac324a646469a95d2670354aee7278078"
dependencies = [
"crossbeam-channel",
"notify",
@@ -2005,7 +1982,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
]
[[package]]
@@ -2093,10 +2070,10 @@ checksum = "2febf9acc5ee5e99d1ad0afcdbccc02d87aa3f857a1f01f825b80eacf8edfcd1"
[[package]]
name = "rustc_apfloat"
-version = "0.2.1+llvm-462a31f5a5ab"
-source = "git+https://github.com/redsun82/rustc_apfloat.git?rev=096d585100636bc2e9f09d7eefec38c5b334d47b#096d585100636bc2e9f09d7eefec38c5b334d47b"
+version = "0.2.2+llvm-462a31f5a5ab"
+source = "git+https://github.com/redsun82/rustc_apfloat.git?rev=32968f16ef1b082243f9bf43a3fbd65c381b3e27#32968f16ef1b082243f9bf43a3fbd65c381b3e27"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.9.0",
"smallvec",
]
@@ -2123,7 +2100,7 @@ dependencies = [
"dashmap 6.1.0",
"hashbrown 0.15.2",
"hashlink",
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"parking_lot",
"portable-atomic",
"rayon",
@@ -2176,9 +2153,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "semver"
-version = "1.0.24"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba"
+checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
dependencies = [
"serde",
]
@@ -2234,7 +2211,7 @@ dependencies = [
"chrono",
"hex",
"indexmap 1.9.3",
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"serde",
"serde_derive",
"serde_json",
@@ -2260,7 +2237,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"itoa",
"ryu",
"serde",
@@ -2345,19 +2322,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
[[package]]
-name = "thiserror"
-version = "1.0.69"
+name = "thin-vec"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d"
+
+[[package]]
+name = "thiserror"
+version = "2.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.69"
+version = "2.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
dependencies = [
"proc-macro2",
"quote",
@@ -2432,7 +2415,7 @@ version = "0.22.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
- "indexmap 2.7.0",
+ "indexmap 2.9.0",
"serde",
"serde_spanned",
"toml_datetime",
@@ -2488,7 +2471,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
- "log 0.4.25",
+ "log 0.4.27",
"once_cell",
"tracing-core",
]
@@ -2603,9 +2586,9 @@ checksum = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f"
[[package]]
name = "unicode-ident"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
[[package]]
name = "unicode-properties"
@@ -2686,7 +2669,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79"
dependencies = [
"bumpalo",
- "log 0.4.25",
+ "log 0.4.27",
"proc-macro2",
"quote",
"syn",
@@ -2995,7 +2978,7 @@ version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags 2.9.0",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index b20cf6dd0ed..d7406677248 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,4 +14,4 @@ members = [
[patch.crates-io]
# patch for build script bug preventing bazel build
# see https://github.com/rust-lang/rustc_apfloat/pull/17
-rustc_apfloat = { git = "https://github.com/redsun82/rustc_apfloat.git", rev = "096d585100636bc2e9f09d7eefec38c5b334d47b" }
+rustc_apfloat = { git = "https://github.com/redsun82/rustc_apfloat.git", rev = "32968f16ef1b082243f9bf43a3fbd65c381b3e27" }
diff --git a/MODULE.bazel b/MODULE.bazel
index fe418cd40c6..ae00bca4390 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -75,7 +75,7 @@ use_repo(
"vendor_ts__argfile-0.2.1",
"vendor_ts__chalk-ir-0.100.0",
"vendor_ts__chrono-0.4.40",
- "vendor_ts__clap-4.5.32",
+ "vendor_ts__clap-4.5.35",
"vendor_ts__dunce-1.0.5",
"vendor_ts__either-1.15.0",
"vendor_ts__encoding-0.2.33",
@@ -90,22 +90,22 @@ use_repo(
"vendor_ts__num_cpus-1.16.0",
"vendor_ts__proc-macro2-1.0.94",
"vendor_ts__quote-1.0.40",
- "vendor_ts__ra_ap_base_db-0.0.270",
- "vendor_ts__ra_ap_cfg-0.0.270",
- "vendor_ts__ra_ap_hir-0.0.270",
- "vendor_ts__ra_ap_hir_def-0.0.270",
- "vendor_ts__ra_ap_hir_expand-0.0.270",
- "vendor_ts__ra_ap_hir_ty-0.0.270",
- "vendor_ts__ra_ap_ide_db-0.0.270",
- "vendor_ts__ra_ap_intern-0.0.270",
- "vendor_ts__ra_ap_load-cargo-0.0.270",
- "vendor_ts__ra_ap_parser-0.0.270",
- "vendor_ts__ra_ap_paths-0.0.270",
- "vendor_ts__ra_ap_project_model-0.0.270",
- "vendor_ts__ra_ap_span-0.0.270",
- "vendor_ts__ra_ap_stdx-0.0.270",
- "vendor_ts__ra_ap_syntax-0.0.270",
- "vendor_ts__ra_ap_vfs-0.0.270",
+ "vendor_ts__ra_ap_base_db-0.0.273",
+ "vendor_ts__ra_ap_cfg-0.0.273",
+ "vendor_ts__ra_ap_hir-0.0.273",
+ "vendor_ts__ra_ap_hir_def-0.0.273",
+ "vendor_ts__ra_ap_hir_expand-0.0.273",
+ "vendor_ts__ra_ap_hir_ty-0.0.273",
+ "vendor_ts__ra_ap_ide_db-0.0.273",
+ "vendor_ts__ra_ap_intern-0.0.273",
+ "vendor_ts__ra_ap_load-cargo-0.0.273",
+ "vendor_ts__ra_ap_parser-0.0.273",
+ "vendor_ts__ra_ap_paths-0.0.273",
+ "vendor_ts__ra_ap_project_model-0.0.273",
+ "vendor_ts__ra_ap_span-0.0.273",
+ "vendor_ts__ra_ap_stdx-0.0.273",
+ "vendor_ts__ra_ap_syntax-0.0.273",
+ "vendor_ts__ra_ap_vfs-0.0.273",
"vendor_ts__rand-0.9.0",
"vendor_ts__rayon-1.10.0",
"vendor_ts__regex-1.11.1",
diff --git a/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md b/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md
index cc35402b804..5d2c6115097 100644
--- a/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md
+++ b/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md
@@ -109,7 +109,7 @@ An attacker could craft a malicious artifact that writes dangerous environment v
### Exploitation
-An attacker is be able to run arbitrary code by injecting environment variables such as `LD_PRELOAD`, `BASH_ENV`, etc.
+An attacker would be able to run arbitrary code by injecting environment variables such as `LD_PRELOAD`, `BASH_ENV`, etc.
## References
diff --git a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql
index aedf65bc564..a8bd8a5f93d 100644
--- a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql
+++ b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql
@@ -1,6 +1,6 @@
/**
* @name Workflow does not contain permissions
- * @description Workflows should contain permissions to provide a clear understanding has permissions to run the workflow.
+ * @description Workflows should contain explicit permissions to restrict the scope of the default GITHUB_TOKEN.
* @kind problem
* @security-severity 5.0
* @problem.severity warning
diff --git a/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.ql b/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.ql
index a83685207bc..1a01033c567 100644
--- a/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.ql
+++ b/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.ql
@@ -3,6 +3,7 @@
* @description All organization and repository secrets are passed to the workflow runner.
* @kind problem
* @precision high
+ * @security-severity 5.0
* @problem.severity warning
* @id actions/excessive-secrets-exposure
* @tags actions
diff --git a/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md b/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md
index 3c56374f993..c33b89fdcec 100644
--- a/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md
+++ b/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md
@@ -2,11 +2,11 @@
## Description
-Secrets derived from other secrets are not known to the workflow runner and therefore not masked unless explicitly registered.
+Secrets derived from other secrets are not known to the workflow runner, and therefore are not masked unless explicitly registered.
## Recommendations
-Avoid defining non-plain secrets. For example, do not define a new secret containing a JSON object and then read properties out of it from the workflow since these read values will not be masked by the workflow runner.
+Avoid defining non-plain secrets. For example, do not define a new secret containing a JSON object and then read properties out of it from the workflow, since these read values will not be masked by the workflow runner.
## Examples
diff --git a/actions/ql/src/change-notes/2025-04-14-excessive-secrets-exposure-security-severity.md b/actions/ql/src/change-notes/2025-04-14-excessive-secrets-exposure-security-severity.md
new file mode 100644
index 00000000000..c59e1eb9db3
--- /dev/null
+++ b/actions/ql/src/change-notes/2025-04-14-excessive-secrets-exposure-security-severity.md
@@ -0,0 +1,4 @@
+---
+category: fix
+---
+* Assigned a `security-severity` to the query `actions/excessive-secrets-exposure`.
\ No newline at end of file
diff --git a/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/old.dbscheme b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/old.dbscheme
new file mode 100644
index 00000000000..0f0a390468a
--- /dev/null
+++ b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/old.dbscheme
@@ -0,0 +1,2446 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * Optionally, record the build mode for each compilation.
+ */
+compilation_build_mode(
+ unique int id : @compilation ref,
+ int mode : int ref
+);
+
+/*
+case @compilation_build_mode.mode of
+ 0 = @build_mode_none
+| 1 = @build_mode_manual
+| 2 = @build_mode_auto
+;
+*/
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref
+);
+
+/*
+case @coroutine_placeholder_variable.kind of
+ 1 = @handle
+| 2 = @promise
+| 3 = @init_await_resume
+;
+*/
+
+coroutine_placeholder_variable(
+ unique int placeholder_variable: @variable ref,
+ int kind: int ref,
+ int function: @function ref
+)
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+deduction_guide_for_class(
+ int id: @function ref,
+ int class_template: @usertype ref
+)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_specialized(int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr ref
+);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @parameterized_element ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+// ... 14 = @using_alias deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+explicit_specifier_exprs(
+ unique int func_id: @function ref,
+ int constant: @expr ref
+)
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl
+ | @concept_template;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ | @c11_generic
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+| 385 = @istriviallyequalitycomparable
+| 386 = @isscopedenum
+| 387 = @istriviallyrelocatable
+| 388 = @datasizeof
+| 389 = @c11_generic
+| 390 = @requires_expr
+| 391 = @nested_requirement
+| 392 = @compound_requirement
+| 393 = @concept_id
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ | @istriviallyequalitycomparable
+ | @isscopedenum
+ | @istriviallyrelocatable
+ ;
+
+compound_requirement_is_noexcept(
+ int expr: @compound_requirement ref
+);
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+type_is_vla(unique int type_id: @derivedtype ref)
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@parameterized_element = @function | @stmt_block | @requires_expr;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @parameterized_element ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/semmlecode.cpp.dbscheme b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/semmlecode.cpp.dbscheme
new file mode 100644
index 00000000000..e594389175c
--- /dev/null
+++ b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/semmlecode.cpp.dbscheme
@@ -0,0 +1,2444 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * Optionally, record the build mode for each compilation.
+ */
+compilation_build_mode(
+ unique int id : @compilation ref,
+ int mode : int ref
+);
+
+/*
+case @compilation_build_mode.mode of
+ 0 = @build_mode_none
+| 1 = @build_mode_manual
+| 2 = @build_mode_auto
+;
+*/
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref
+);
+
+/*
+case @coroutine_placeholder_variable.kind of
+ 1 = @handle
+| 2 = @promise
+| 3 = @init_await_resume
+;
+*/
+
+coroutine_placeholder_variable(
+ unique int placeholder_variable: @variable ref,
+ int kind: int ref,
+ int function: @function ref
+)
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+deduction_guide_for_class(
+ int id: @function ref,
+ int class_template: @usertype ref
+)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_specialized(int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr ref
+);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @parameterized_element ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+// ... 14 = @using_alias deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+explicit_specifier_exprs(
+ unique int func_id: @function ref,
+ int constant: @expr ref
+)
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl
+ | @concept_template;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ | @c11_generic
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+| 385 = @istriviallyequalitycomparable
+| 386 = @isscopedenum
+| 387 = @istriviallyrelocatable
+| 388 = @datasizeof
+| 389 = @c11_generic
+| 390 = @requires_expr
+| 391 = @nested_requirement
+| 392 = @compound_requirement
+| 393 = @concept_id
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ | @istriviallyequalitycomparable
+ | @isscopedenum
+ | @istriviallyrelocatable
+ ;
+
+compound_requirement_is_noexcept(
+ int expr: @compound_requirement ref
+);
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@parameterized_element = @function | @stmt_block | @requires_expr;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @parameterized_element ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/upgrade.properties b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/upgrade.properties
new file mode 100644
index 00000000000..92a9acc1327
--- /dev/null
+++ b/cpp/downgrades/0f0a390468a5eb43d1dc72937c028070b106bf53/upgrade.properties
@@ -0,0 +1,3 @@
+description: Add a new predicate `isVla()` to the `ArrayType` class
+compatibility: full
+type_is_vla.rel: delete
\ No newline at end of file
diff --git a/cpp/ql/lib/change-notes/2025-04-14-variable-length-arrays.md b/cpp/ql/lib/change-notes/2025-04-14-variable-length-arrays.md
new file mode 100644
index 00000000000..e7e6cfb849e
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2025-04-14-variable-length-arrays.md
@@ -0,0 +1,4 @@
+---
+category: feature
+---
+* Added the `isVla()` predicate to the `ArrayType` class. This allows queries to identify variable-length arrays (VLAs).
\ No newline at end of file
diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll
index 9c33dbec1b5..fbc894a7e07 100644
--- a/cpp/ql/lib/semmle/code/cpp/Type.qll
+++ b/cpp/ql/lib/semmle/code/cpp/Type.qll
@@ -1369,6 +1369,11 @@ class ArrayType extends DerivedType {
override predicate isDeeplyConst() { this.getBaseType().isDeeplyConst() } // No such thing as a const array type
override predicate isDeeplyConstBelow() { this.getBaseType().isDeeplyConst() }
+
+ /**
+ * Holds if this array is a variable-length array (VLA).
+ */
+ predicate isVla() { type_is_vla(underlyingElement(this)) }
}
/**
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme
index e594389175c..0f0a390468a 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme
@@ -2178,6 +2178,8 @@ variable_vla(
int decl: @stmt_vla_decl ref
);
+type_is_vla(unique int type_id: @derivedtype ref)
+
if_initialization(
unique int if_stmt: @stmt_if ref,
int init_id: @stmt ref
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
index 5f0f1543837..585e8f31e0a 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
@@ -18,15 +18,15 @@
@location_default
- 31650404
+ 31650363
@location_stmt
- 5202910
+ 5202903
@location_expr
- 17958942
+ 17958919
@diagnostic
@@ -42,35 +42,35 @@
@macro_expansion
- 40298943
+ 40299208
@other_macro_reference
- 314182
+ 314184
@function
- 3356850
+ 3356874
@fun_decl
- 3388814
+ 3388838
@var_decl
- 6734234
+ 6734225
@type_decl
- 1890757
+ 1890777
@namespace_decl
- 425651
+ 425650
@using_declaration
- 333243
+ 333244
@using_directive
@@ -86,15 +86,15 @@
@parameter
- 4798833
+ 4798867
@membervariable
- 1441780
+ 1441778
@globalvariable
- 425546
+ 425545
@localvariable
@@ -334,7 +334,7 @@
@type_with_specifiers
- 725883
+ 725882
@array
@@ -342,11 +342,11 @@
@routineptr
- 862680
+ 862686
@reference
- 1024847
+ 1024846
@gnu_vector
@@ -370,15 +370,15 @@
@usertype
- 4992117
+ 4987434
@mangledname
- 5808009
+ 5807194
@type_mention
- 5507865
+ 5507858
@concept_template
@@ -386,7 +386,7 @@
@routinetype
- 762063
+ 762068
@ptrtomember
@@ -394,7 +394,7 @@
@specifier
- 7131
+ 8341
@gnuattribute
@@ -402,11 +402,11 @@
@stdattribute
- 346325
+ 346324
@declspec
- 326925
+ 326924
@msattribute
@@ -422,7 +422,7 @@
@attribute_arg_constant_expr
- 89599
+ 89600
@attribute_arg_expr
@@ -442,15 +442,15 @@
@derivation
- 599880
+ 599885
@frienddecl
- 883302
+ 883308
@comment
- 11290145
+ 11290131
@namespace
@@ -462,15 +462,15 @@
@namequalifier
- 3258064
+ 3258067
@value
- 14099266
+ 14099248
@initialiser
- 2336673
+ 2336670
@address_of
@@ -478,19 +478,19 @@
@indirect
- 399728
+ 399727
@array_to_pointer
- 1951449
+ 1951447
@parexpr
- 4895384
+ 4895377
@arithnegexpr
- 585843
+ 585842
@unaryplusexpr
@@ -506,7 +506,7 @@
@postincrexpr
- 84817
+ 84816
@postdecrexpr
@@ -514,7 +514,7 @@
@preincrexpr
- 96451
+ 96450
@predecrexpr
@@ -522,7 +522,7 @@
@conditionalexpr
- 896445
+ 896444
@addexpr
@@ -530,7 +530,7 @@
@subexpr
- 466249
+ 466248
@mulexpr
@@ -538,7 +538,7 @@
@divexpr
- 60351
+ 60352
@remexpr
@@ -546,7 +546,7 @@
@paddexpr
- 118344
+ 118343
@psubexpr
@@ -558,7 +558,7 @@
@lshiftexpr
- 610849
+ 610848
@rshiftexpr
@@ -566,7 +566,7 @@
@andexpr
- 536666
+ 536665
@orexpr
@@ -578,15 +578,15 @@
@eqexpr
- 641622
+ 641621
@neexpr
- 411385
+ 411384
@gtexpr
- 110847
+ 110846
@ltexpr
@@ -594,7 +594,7 @@
@geexpr
- 80994
+ 80993
@leexpr
@@ -602,7 +602,7 @@
@assignexpr
- 1277660
+ 1277658
@assignaddexpr
@@ -658,7 +658,7 @@
@orlogicalexpr
- 1203319
+ 1203317
@commaexpr
@@ -666,11 +666,11 @@
@subscriptexpr
- 433959
+ 433958
@callexpr
- 302410
+ 302370
@vastartexpr
@@ -690,15 +690,15 @@
@varaccess
- 8226118
+ 8226107
@runtime_sizeof
- 397856
+ 397855
@runtime_alignof
- 61478
+ 61479
@expr_stmt
@@ -706,11 +706,11 @@
@routineexpr
- 6144464
+ 6144489
@type_operand
- 1532455
+ 1532453
@offsetofexpr
@@ -718,11 +718,11 @@
@typescompexpr
- 765413
+ 765411
@literal
- 6101418
+ 6101411
@aggregateliteral
@@ -730,11 +730,11 @@
@c_style_cast
- 6024777
+ 6024778
@temp_init
- 1075849
+ 1076139
@errorexpr
@@ -742,11 +742,11 @@
@reference_to
- 2194465
+ 2194481
@ref_indirect
- 2657383
+ 2657402
@vacuous_destructor_call
@@ -806,11 +806,11 @@
@thisaccess
- 1525361
+ 1525359
@new_expr
- 58256
+ 58257
@delete_expr
@@ -818,19 +818,19 @@
@throw_expr
- 26214
+ 26159
@condition_decl
- 438290
+ 438294
@braced_init_list
- 2334
+ 2335
@type_id
- 60404
+ 60405
@sizeof_pack
@@ -922,7 +922,7 @@
@uuidof
- 27728
+ 27727
@delete_array_expr
@@ -938,7 +938,7 @@
@ctordirectinit
- 142247
+ 142248
@ctorvirtualinit
@@ -946,7 +946,7 @@
@ctorfieldinit
- 259362
+ 259364
@ctordelegatinginit
@@ -962,11 +962,11 @@
@dtorfielddestruct
- 50222
+ 50223
@static_cast
- 335478
+ 335479
@reinterpret_cast
@@ -986,7 +986,7 @@
@param_ref
- 177918
+ 177993
@noopexpr
@@ -1090,7 +1090,7 @@
@noexceptexpr
- 30759
+ 30772
@builtinshufflevector
@@ -1262,7 +1262,7 @@
@reuseexpr
- 907876
+ 907883
@istriviallycopyassignable
@@ -1382,11 +1382,11 @@
@stmt_expr
- 2026088
+ 2026085
@stmt_if
- 987521
+ 987520
@stmt_while
@@ -1394,7 +1394,7 @@
@stmt_goto
- 151172
+ 151171
@stmt_label
@@ -1402,11 +1402,11 @@
@stmt_return
- 1515834
+ 1515845
@stmt_block
- 1897791
+ 1897789
@stmt_end_test_while
@@ -1418,11 +1418,11 @@
@stmt_switch_case
- 896207
+ 896214
@stmt_switch
- 441450
+ 441453
@stmt_asm
@@ -1430,11 +1430,11 @@
@stmt_decl
- 770893
+ 770895
@stmt_empty
- 460245
+ 460249
@stmt_continue
@@ -1442,11 +1442,11 @@
@stmt_break
- 140999
+ 140998
@stmt_try_block
- 29027
+ 28973
@stmt_microsoft_try
@@ -1470,7 +1470,7 @@
@stmt_handler
- 47521
+ 47475
@stmt_constexpr_if
@@ -1490,7 +1490,7 @@
@ppd_if
- 511549
+ 511548
@ppd_ifdef
@@ -1498,7 +1498,7 @@
@ppd_ifndef
- 154178
+ 154177
@ppd_elif
@@ -1506,19 +1506,19 @@
@ppd_else
- 241109
+ 241108
@ppd_endif
- 846303
+ 846302
@ppd_plain_include
- 401967
+ 408579
@ppd_define
- 3130381
+ 3130376
@ppd_undef
@@ -1558,7 +1558,7 @@
@ppd_warning
- 6
+ 13
@link_target
@@ -1640,7 +1640,7 @@
compilation_args
- 1298224
+ 1298229
id
@@ -1985,7 +1985,7 @@
2
3
- 16269
+ 16270
3
@@ -2221,7 +2221,7 @@
seconds
- 17489
+ 17407
@@ -2267,7 +2267,7 @@
2
3
- 203
+ 149
3
@@ -2277,7 +2277,7 @@
4
5
- 7667
+ 7721
@@ -2323,8 +2323,8 @@
12
- 1291
- 1292
+ 1285
+ 1286
13
@@ -2381,13 +2381,13 @@
13
- 714
- 715
+ 718
+ 719
13
- 787
- 788
+ 769
+ 770
13
@@ -2404,27 +2404,27 @@
1
2
- 10891
+ 10837
2
3
- 3806
+ 3617
3
4
- 1463
+ 1368
4
- 662
- 1314
+ 10
+ 1327
- 689
- 690
- 13
+ 10
+ 694
+ 257
@@ -2440,7 +2440,7 @@
1
2
- 17489
+ 17407
@@ -2461,12 +2461,12 @@
2
3
- 3048
+ 2980
3
- 5
- 27
+ 4
+ 13
@@ -2730,11 +2730,11 @@
cpu_seconds
- 11921
+ 12083
elapsed_seconds
- 243
+ 257
@@ -2780,17 +2780,17 @@
1
2
- 9916
+ 10241
2
3
- 1354
+ 1246
3
- 42
- 650
+ 35
+ 596
@@ -2806,12 +2806,12 @@
1
2
- 11054
+ 11365
2
3
- 867
+ 717
@@ -2827,66 +2827,61 @@
1
2
- 40
+ 67
2
3
- 27
-
-
- 5
- 6
13
- 7
- 8
+ 3
+ 4
13
- 9
- 10
- 27
+ 6
+ 7
+ 13
- 10
- 11
- 13
+ 11
+ 12
+ 54
20
21
- 27
-
-
- 24
- 25
13
- 46
- 47
+ 31
+ 32
13
- 128
- 129
+ 43
+ 44
13
- 275
- 276
+ 127
+ 128
13
- 306
- 307
+ 265
+ 266
13
- 331
- 332
+ 321
+ 322
+ 13
+
+
+ 330
+ 331
13
@@ -2903,61 +2898,61 @@
1
2
- 40
+ 67
2
3
- 27
-
-
- 5
- 6
13
- 7
- 8
+ 3
+ 4
13
- 9
- 10
- 40
+ 6
+ 7
+ 13
+
+
+ 11
+ 12
+ 54
20
21
- 27
-
-
- 24
- 25
13
- 46
- 47
+ 31
+ 32
13
- 122
- 123
+ 43
+ 44
13
- 166
- 167
+ 120
+ 121
13
- 248
- 249
+ 171
+ 172
13
- 252
- 253
+ 233
+ 234
+ 13
+
+
+ 267
+ 268
13
@@ -4730,11 +4725,11 @@
locations_default
- 31650404
+ 31650363
id
- 31650404
+ 31650363
container
@@ -4742,7 +4737,7 @@
startLine
- 7709299
+ 7709289
startColumn
@@ -4750,7 +4745,7 @@
endLine
- 7708627
+ 7708617
endColumn
@@ -4768,7 +4763,7 @@
1
2
- 31650404
+ 31650363
@@ -4784,7 +4779,7 @@
1
2
- 31650404
+ 31650363
@@ -4800,7 +4795,7 @@
1
2
- 31650404
+ 31650363
@@ -4816,7 +4811,7 @@
1
2
- 31650404
+ 31650363
@@ -4832,7 +4827,7 @@
1
2
- 31650404
+ 31650363
@@ -5233,27 +5228,27 @@
1
2
- 5187073
+ 5187066
2
3
- 787640
+ 787639
3
4
- 633853
+ 633852
4
10
- 618380
+ 618379
10
414
- 482352
+ 482351
@@ -5269,17 +5264,17 @@
1
2
- 5247619
+ 5247612
2
3
- 1198817
+ 1198816
3
5
- 636005
+ 636004
5
@@ -5305,7 +5300,7 @@
1
2
- 5929506
+ 5929498
2
@@ -5315,7 +5310,7 @@
3
5
- 581379
+ 581378
5
@@ -5341,12 +5336,12 @@
1
2
- 7561432
+ 7558596
2
82
- 147867
+ 150692
@@ -5362,17 +5357,17 @@
1
2
- 5256096
+ 5256089
2
3
- 764364
+ 764363
3
4
- 626991
+ 626990
4
@@ -5685,7 +5680,7 @@
2521
- 56781
+ 56782
807
@@ -5778,27 +5773,27 @@
1
2
- 5183440
+ 5183433
2
3
- 792888
+ 792752
3
4
- 630623
+ 630892
4
9
- 579630
+ 579495
9
412
- 522044
+ 522043
@@ -5814,27 +5809,27 @@
1
2
- 5242910
+ 5242903
2
3
- 1200970
+ 1200968
3
5
- 638831
+ 638830
5
54
- 579495
+ 579629
54
312
- 46418
+ 46284
@@ -5850,12 +5845,12 @@
1
2
- 7548112
+ 7545276
2
7
- 160515
+ 163340
@@ -5871,22 +5866,22 @@
1
2
- 5929640
+ 5929632
2
3
- 579092
+ 578956
3
5
- 581379
+ 581513
5
42
- 578957
+ 578956
42
@@ -5907,27 +5902,27 @@
1
2
- 5253136
+ 5253129
2
3
- 768938
+ 768803
3
4
- 623761
+ 624030
4
10
- 600619
+ 600484
10
225
- 462170
+ 462169
@@ -6257,11 +6252,11 @@
locations_stmt
- 5202910
+ 5202903
id
- 5202910
+ 5202903
container
@@ -6269,7 +6264,7 @@
startLine
- 272852
+ 272851
startColumn
@@ -6295,7 +6290,7 @@
1
2
- 5202910
+ 5202903
@@ -6311,7 +6306,7 @@
1
2
- 5202910
+ 5202903
@@ -6327,7 +6322,7 @@
1
2
- 5202910
+ 5202903
@@ -6343,7 +6338,7 @@
1
2
- 5202910
+ 5202903
@@ -6359,7 +6354,7 @@
1
2
- 5202910
+ 5202903
@@ -8249,11 +8244,11 @@
locations_expr
- 17958942
+ 17958919
id
- 17958942
+ 17958919
container
@@ -8261,7 +8256,7 @@
startLine
- 262020
+ 262019
startColumn
@@ -8269,7 +8264,7 @@
endLine
- 261992
+ 261991
endColumn
@@ -8287,7 +8282,7 @@
1
2
- 17958942
+ 17958919
@@ -8303,7 +8298,7 @@
1
2
- 17958942
+ 17958919
@@ -8319,7 +8314,7 @@
1
2
- 17958942
+ 17958919
@@ -8335,7 +8330,7 @@
1
2
- 17958942
+ 17958919
@@ -8351,7 +8346,7 @@
1
2
- 17958942
+ 17958919
@@ -8995,7 +8990,7 @@
3
4
- 37688
+ 37687
4
@@ -9634,7 +9629,7 @@
2
3
- 68220
+ 68219
3
@@ -10176,11 +10171,11 @@
numlines
- 860969
+ 860968
element_id
- 859623
+ 859622
num_lines
@@ -10206,7 +10201,7 @@
1
2
- 858278
+ 858277
2
@@ -10227,7 +10222,7 @@
1
2
- 858278
+ 858277
2
@@ -10248,7 +10243,7 @@
1
2
- 859354
+ 859353
2
@@ -11260,7 +11255,7 @@
containerparent
- 99502
+ 99503
parent
@@ -11268,7 +11263,7 @@
child
- 99502
+ 99503
@@ -11333,7 +11328,7 @@
1
2
- 99502
+ 99503
@@ -11343,7 +11338,7 @@
fileannotations
- 5387460
+ 5387479
id
@@ -11355,7 +11350,7 @@
name
- 75307
+ 75308
value
@@ -11675,7 +11670,7 @@
1
2
- 75307
+ 75308
@@ -11797,7 +11792,7 @@
51
58
- 3887
+ 3888
58
@@ -11838,7 +11833,7 @@
1
2
- 50665
+ 50666
2
@@ -11919,7 +11914,7 @@
113
145
- 3887
+ 3888
145
@@ -11934,15 +11929,15 @@
inmacroexpansion
- 149742415
+ 149742219
id
- 24596921
+ 24596888
inv
- 3698101
+ 3698096
@@ -11956,32 +11951,32 @@
1
3
- 2167550
+ 2167547
3
5
- 1469288
+ 1469286
5
6
- 1617557
+ 1617555
6
7
- 6574000
+ 6573991
7
8
- 8708728
+ 8708717
8
9
- 3552858
+ 3552853
9
@@ -12007,12 +12002,12 @@
2
3
- 743635
+ 743634
3
4
- 479645
+ 479644
4
@@ -12022,7 +12017,7 @@
7
8
- 282496
+ 282495
8
@@ -12042,12 +12037,12 @@
11
337
- 306935
+ 306934
339
423
- 281412
+ 281411
423
@@ -12062,15 +12057,15 @@
affectedbymacroexpansion
- 48676789
+ 48676725
id
- 7035609
+ 7035600
inv
- 3798618
+ 3798613
@@ -12084,12 +12079,12 @@
1
2
- 3842147
+ 3842142
2
3
- 764600
+ 764599
3
@@ -12099,7 +12094,7 @@
4
5
- 771826
+ 771825
5
@@ -12109,12 +12104,12 @@
12
50
- 555612
+ 555611
50
9900
- 205477
+ 205476
@@ -12145,22 +12140,22 @@
9
12
- 342529
+ 342528
12
13
- 455467
+ 455466
13
14
- 225833
+ 225832
14
15
- 407558
+ 407557
15
@@ -12180,12 +12175,12 @@
18
20
- 343850
+ 343849
20
25
- 285057
+ 285056
25
@@ -12200,19 +12195,19 @@
macroinvocations
- 40601028
+ 40601294
id
- 40601028
+ 40601294
macro_id
- 109906
+ 109907
location
- 1070092
+ 1070096
kind
@@ -12230,7 +12225,7 @@
1
2
- 40601028
+ 40601294
@@ -12246,7 +12241,7 @@
1
2
- 40601028
+ 40601294
@@ -12262,7 +12257,7 @@
1
2
- 40601028
+ 40601294
@@ -12406,32 +12401,32 @@
1
2
- 426609
+ 426610
2
3
- 252746
+ 252707
3
4
- 113185
+ 113199
4
6
- 77475
+ 77502
6
11
- 82758
+ 82759
11
42
- 80455
+ 80456
42
@@ -12452,12 +12447,12 @@
1
2
- 1009645
+ 1009649
2
367
- 60446
+ 60447
@@ -12473,7 +12468,7 @@
1
2
- 1070092
+ 1070096
@@ -12492,8 +12487,8 @@
13
- 2974746
- 2974747
+ 2974755
+ 2974756
13
@@ -12546,15 +12541,15 @@
macroparent
- 35810829
+ 35811023
id
- 35810829
+ 35811023
parent_id
- 28059915
+ 28060082
@@ -12568,7 +12563,7 @@
1
2
- 35810829
+ 35811023
@@ -12584,17 +12579,17 @@
1
2
- 21857859
+ 21858004
2
3
- 5174257
+ 5174275
3
91
- 1027798
+ 1027802
@@ -12604,15 +12599,15 @@
macrolocationbind
- 5543856
+ 5543848
id
- 3882187
+ 3882182
location
- 2758860
+ 2758856
@@ -12626,17 +12621,17 @@
1
2
- 3056762
+ 3056758
2
3
- 469909
+ 469908
3
7
- 314962
+ 314961
7
@@ -12657,12 +12652,12 @@
1
2
- 2198775
+ 2198772
2
3
- 239730
+ 239729
3
@@ -12682,11 +12677,11 @@
macro_argument_unexpanded
- 103251986
+ 103252337
invocation
- 31225989
+ 31226086
argument_index
@@ -12694,7 +12689,7 @@
text
- 440264
+ 440266
@@ -12708,22 +12703,22 @@
1
2
- 9979439
+ 9979461
2
3
- 12505023
+ 12505068
3
4
- 6395493
+ 6395516
4
67
- 2346032
+ 2346040
@@ -12739,22 +12734,22 @@
1
2
- 10213680
+ 10213703
2
3
- 12526522
+ 12526567
3
4
- 6195580
+ 6195602
4
67
- 2290205
+ 2290213
@@ -12779,7 +12774,7 @@
645273
- 2305009
+ 2305008
40
@@ -12852,7 +12847,7 @@
9
15
- 36847
+ 36848
15
@@ -12862,7 +12857,7 @@
27
57
- 34124
+ 34125
57
@@ -12888,17 +12883,17 @@
1
2
- 311893
+ 311894
2
3
- 115271
+ 115272
3
9
- 13099
+ 13100
@@ -12908,11 +12903,11 @@
macro_argument_expanded
- 103251986
+ 103252337
invocation
- 31225989
+ 31226086
argument_index
@@ -12920,7 +12915,7 @@
text
- 266686
+ 266687
@@ -12934,22 +12929,22 @@
1
2
- 9979439
+ 9979461
2
3
- 12505023
+ 12505068
3
4
- 6395493
+ 6395516
4
67
- 2346032
+ 2346040
@@ -12965,22 +12960,22 @@
1
2
- 13763081
+ 13763116
2
3
- 10789713
+ 10789751
3
4
- 5403974
+ 5403993
4
9
- 1269220
+ 1269224
@@ -13005,7 +13000,7 @@
645273
- 2305009
+ 2305008
40
@@ -13119,7 +13114,7 @@
2
3
- 114038
+ 114039
3
@@ -13134,15 +13129,15 @@
functions
- 3356850
+ 3356874
id
- 3356850
+ 3356874
name
- 466655
+ 466658
kind
@@ -13160,7 +13155,7 @@
1
2
- 3356850
+ 3356874
@@ -13176,7 +13171,7 @@
1
2
- 3356850
+ 3356874
@@ -13192,12 +13187,12 @@
1
2
- 372696
+ 372699
2
3
- 31834
+ 31835
3
@@ -13223,7 +13218,7 @@
1
2
- 465409
+ 465412
2
@@ -13340,15 +13335,15 @@
function_entry_point
- 1438631
+ 1438642
id
- 1433905
+ 1433916
entry_point
- 1438631
+ 1438642
@@ -13362,7 +13357,7 @@
1
2
- 1429867
+ 1429877
2
@@ -13383,7 +13378,7 @@
1
2
- 1438631
+ 1438642
@@ -13393,15 +13388,15 @@
function_return_type
- 3363165
+ 3363190
id
- 3356850
+ 3356874
return_type
- 631801
+ 631806
@@ -13415,7 +13410,7 @@
1
2
- 3351050
+ 3351074
2
@@ -13436,7 +13431,7 @@
1
2
- 436968
+ 436971
2
@@ -13742,33 +13737,33 @@
function_deleted
- 94415
+ 94416
id
- 94415
+ 94416
function_defaulted
- 55394
+ 55395
id
- 55394
+ 55395
function_prototyped
- 3352726
+ 3352750
id
- 3352726
+ 3352750
@@ -13848,15 +13843,15 @@
member_function_this_type
- 674420
+ 674425
id
- 674420
+ 674425
this_type
- 233542
+ 233544
@@ -13870,7 +13865,7 @@
1
2
- 674420
+ 674425
@@ -13896,7 +13891,7 @@
3
4
- 36517
+ 36518
4
@@ -13921,27 +13916,27 @@
fun_decls
- 3392723
+ 3392748
id
- 3388814
+ 3388838
function
- 3232260
+ 3232283
type_id
- 600783
+ 600787
name
- 462015
+ 462018
location
- 932365
+ 932372
@@ -13955,7 +13950,7 @@
1
2
- 3388814
+ 3388838
@@ -13971,7 +13966,7 @@
1
2
- 3385420
+ 3385444
2
@@ -13992,7 +13987,7 @@
1
2
- 3388814
+ 3388838
@@ -14008,7 +14003,7 @@
1
2
- 3388814
+ 3388838
@@ -14024,12 +14019,12 @@
1
2
- 3101869
+ 3101892
2
7
- 130390
+ 130391
@@ -14045,7 +14040,7 @@
1
2
- 3221906
+ 3221929
2
@@ -14066,7 +14061,7 @@
1
2
- 3232260
+ 3232283
@@ -14082,12 +14077,12 @@
1
2
- 3146937
+ 3146959
2
6
- 85322
+ 85323
@@ -14103,12 +14098,12 @@
1
2
- 397056
+ 397059
2
3
- 127253
+ 127254
3
@@ -14134,17 +14129,17 @@
1
2
- 415401
+ 415404
2
3
- 112732
+ 112733
3
6
- 52284
+ 52285
6
@@ -14165,7 +14160,7 @@
1
2
- 472627
+ 472630
2
@@ -14196,17 +14191,17 @@
1
2
- 441307
+ 441310
2
3
- 90220
+ 90221
3
6
- 51382
+ 51383
6
@@ -14227,7 +14222,7 @@
1
2
- 347650
+ 347652
2
@@ -14237,7 +14232,7 @@
3
6
- 37591
+ 37592
6
@@ -14263,12 +14258,12 @@
1
2
- 369345
+ 369348
2
3
- 32049
+ 32050
3
@@ -14278,7 +14273,7 @@
9
4900
- 25003
+ 25004
@@ -14294,7 +14289,7 @@
1
2
- 427516
+ 427519
2
@@ -14315,7 +14310,7 @@
1
2
- 355512
+ 355514
2
@@ -14346,17 +14341,17 @@
1
2
- 736887
+ 736892
2
3
- 90263
+ 90264
3
13
- 70629
+ 70630
13
@@ -14377,17 +14372,17 @@
1
2
- 777787
+ 777793
2
4
- 73250
+ 73251
4
66
- 71016
+ 71017
66
@@ -14408,7 +14403,7 @@
1
2
- 854388
+ 854395
2
@@ -14434,7 +14429,7 @@
1
2
- 884763
+ 884769
2
@@ -14449,11 +14444,11 @@
fun_def
- 1592178
+ 1592190
id
- 1592178
+ 1592190
@@ -14482,15 +14477,15 @@
fun_decl_specifiers
- 1763135
+ 2464552
id
- 1197760
+ 1197759
name
- 218
+ 327
@@ -14504,17 +14499,22 @@
1
2
- 640797
+ 267558
2
3
- 548552
+ 596777
3
4
- 8410
+ 330256
+
+
+ 4
+ 5
+ 3167
@@ -14537,6 +14537,16 @@
2862
54
+
+ 6284
+ 6285
+ 54
+
+
+ 6559
+ 6560
+ 54
+
6738
6739
@@ -14676,26 +14686,26 @@
fun_decl_empty_throws
- 435235
+ 435234
fun_decl
- 435235
+ 435234
fun_decl_noexcept
- 178851
+ 178852
fun_decl
- 178851
+ 178852
constant
- 178336
+ 178251
@@ -14709,7 +14719,7 @@
1
2
- 178851
+ 178852
@@ -14725,12 +14735,12 @@
1
2
- 177863
+ 177692
2
4
- 472
+ 558
@@ -14740,11 +14750,11 @@
fun_decl_empty_noexcept
- 1063866
+ 1063865
fun_decl
- 1063866
+ 1063865
@@ -14861,7 +14871,7 @@
constraint
- 30949
+ 30948
@@ -15000,7 +15010,7 @@
1
2
- 30949
+ 30948
@@ -15010,11 +15020,11 @@
param_decl_bind
- 4870837
+ 4870873
id
- 4870837
+ 4870873
index
@@ -15022,7 +15032,7 @@
fun_decl
- 2664643
+ 2664662
@@ -15036,7 +15046,7 @@
1
2
- 4870837
+ 4870873
@@ -15052,7 +15062,7 @@
1
2
- 4870837
+ 4870873
@@ -15230,22 +15240,22 @@
1
2
- 1370794
+ 1370804
2
3
- 667761
+ 667766
3
4
- 448997
+ 449001
4
21
- 177090
+ 177091
@@ -15261,22 +15271,22 @@
1
2
- 1370794
+ 1370804
2
3
- 667761
+ 667766
3
4
- 448997
+ 449001
4
21
- 177090
+ 177091
@@ -15286,27 +15296,27 @@
var_decls
- 6739212
+ 6739203
id
- 6734234
+ 6734225
variable
- 6565781
+ 6565772
type_id
- 1513120
+ 1513118
name
- 829081
+ 829080
location
- 3605468
+ 3605463
@@ -15320,7 +15330,7 @@
1
2
- 6734234
+ 6734225
@@ -15336,7 +15346,7 @@
1
2
- 6729256
+ 6729247
2
@@ -15357,7 +15367,7 @@
1
2
- 6734234
+ 6734225
@@ -15373,7 +15383,7 @@
1
2
- 6734234
+ 6734225
@@ -15389,7 +15399,7 @@
1
2
- 6408495
+ 6408486
2
@@ -15410,7 +15420,7 @@
1
2
- 6551250
+ 6551241
2
@@ -15431,7 +15441,7 @@
1
2
- 6548559
+ 6548550
2
@@ -15452,7 +15462,7 @@
1
2
- 6434731
+ 6434723
2
@@ -15473,7 +15483,7 @@
1
2
- 890165
+ 890164
2
@@ -15488,7 +15498,7 @@
5
12
- 116518
+ 116517
12
@@ -15509,7 +15519,7 @@
1
2
- 909406
+ 909405
2
@@ -15545,12 +15555,12 @@
1
2
- 1159933
+ 1159932
2
3
- 207741
+ 207740
3
@@ -15576,12 +15586,12 @@
1
2
- 1026327
+ 1026326
2
3
- 228596
+ 228595
3
@@ -15612,7 +15622,7 @@
1
2
- 457999
+ 457998
2
@@ -15627,7 +15637,7 @@
4
7
- 65390
+ 65389
7
@@ -15658,7 +15668,7 @@
2
3
- 156344
+ 156343
3
@@ -15694,7 +15704,7 @@
1
2
- 640176
+ 640175
2
@@ -15725,7 +15735,7 @@
1
2
- 487734
+ 487733
2
@@ -15761,7 +15771,7 @@
1
2
- 3120828
+ 3120824
2
@@ -15787,7 +15797,7 @@
1
2
- 3145719
+ 3145715
2
@@ -15813,7 +15823,7 @@
1
2
- 3312961
+ 3312957
2
@@ -15839,7 +15849,7 @@
1
2
- 3594435
+ 3594430
2
@@ -15854,11 +15864,11 @@
var_def
- 3747415
+ 3747410
id
- 3747415
+ 3747410
@@ -16008,19 +16018,19 @@
type_decls
- 1890757
+ 1890777
id
- 1890757
+ 1890777
type_id
- 1849357
+ 1849364
location
- 1485512
+ 1485517
@@ -16034,7 +16044,7 @@
1
2
- 1890757
+ 1890777
@@ -16050,7 +16060,7 @@
1
2
- 1890757
+ 1890777
@@ -16066,12 +16076,12 @@
1
2
- 1819567
+ 1819574
2
24
- 29789
+ 29790
@@ -16087,7 +16097,7 @@
1
2
- 1820895
+ 1820902
2
@@ -16108,7 +16118,7 @@
1
2
- 1408984
+ 1408989
2
@@ -16129,12 +16139,12 @@
1
2
- 1410326
+ 1410331
2
651
- 75185
+ 75186
@@ -16144,22 +16154,22 @@
type_def
- 1297357
+ 1297362
id
- 1297357
+ 1297362
type_decl_top
- 652212
+ 652211
type_decl
- 652212
+ 652211
@@ -16239,11 +16249,11 @@
namespace_decls
- 425651
+ 425650
id
- 425651
+ 425650
namespace_id
@@ -16251,11 +16261,11 @@
location
- 425651
+ 425650
bodylocation
- 425651
+ 425650
@@ -16269,7 +16279,7 @@
1
2
- 425651
+ 425650
@@ -16285,7 +16295,7 @@
1
2
- 425651
+ 425650
@@ -16301,7 +16311,7 @@
1
2
- 425651
+ 425650
@@ -16515,7 +16525,7 @@
1
2
- 425651
+ 425650
@@ -16531,7 +16541,7 @@
1
2
- 425651
+ 425650
@@ -16547,7 +16557,7 @@
1
2
- 425651
+ 425650
@@ -16563,7 +16573,7 @@
1
2
- 425651
+ 425650
@@ -16579,7 +16589,7 @@
1
2
- 425651
+ 425650
@@ -16595,7 +16605,7 @@
1
2
- 425651
+ 425650
@@ -16605,11 +16615,11 @@
usings
- 338567
+ 338568
id
- 338567
+ 338568
element_id
@@ -16635,7 +16645,7 @@
1
2
- 338567
+ 338568
@@ -16651,7 +16661,7 @@
1
2
- 338567
+ 338568
@@ -16667,7 +16677,7 @@
1
2
- 338567
+ 338568
@@ -16683,7 +16693,7 @@
1
2
- 55420
+ 55421
2
@@ -16709,7 +16719,7 @@
1
2
- 55420
+ 55421
2
@@ -16886,7 +16896,7 @@
using_container
- 732094
+ 732097
parent
@@ -16894,7 +16904,7 @@
child
- 338567
+ 338568
@@ -16964,7 +16974,7 @@
2
3
- 154259
+ 154260
3
@@ -17597,15 +17607,15 @@
params
- 4808499
+ 4808534
id
- 4798833
+ 4798867
function
- 2659144
+ 2659163
index
@@ -17613,7 +17623,7 @@
type_id
- 862079
+ 862085
@@ -17627,7 +17637,7 @@
1
2
- 4798833
+ 4798867
@@ -17643,7 +17653,7 @@
1
2
- 4798833
+ 4798867
@@ -17659,7 +17669,7 @@
1
2
- 4789510
+ 4789545
2
@@ -17680,22 +17690,22 @@
1
2
- 1392103
+ 1392113
2
3
- 661145
+ 661149
3
4
- 439589
+ 439592
4
21
- 166306
+ 166307
@@ -17711,22 +17721,22 @@
1
2
- 1392103
+ 1392113
2
3
- 661145
+ 661149
3
4
- 439589
+ 439592
4
21
- 166306
+ 166307
@@ -17742,17 +17752,17 @@
1
2
- 1481035
+ 1481046
2
3
- 669909
+ 669914
3
4
- 403844
+ 403847
4
@@ -18016,12 +18026,12 @@
1
2
- 449169
+ 449172
2
3
- 180011
+ 180012
3
@@ -18031,7 +18041,7 @@
4
6
- 77761
+ 77762
6
@@ -18041,7 +18051,7 @@
15
3702
- 36388
+ 36389
@@ -18057,12 +18067,12 @@
1
2
- 492088
+ 492092
2
3
- 152343
+ 152345
3
@@ -18072,12 +18082,12 @@
4
6
- 69383
+ 69384
6
18
- 66247
+ 66248
18
@@ -18098,17 +18108,17 @@
1
2
- 634465
+ 634470
2
3
- 187744
+ 187746
3
17
- 39868
+ 39869
@@ -18196,11 +18206,11 @@
membervariables
- 1444238
+ 1444236
id
- 1441780
+ 1441778
type_id
@@ -18208,7 +18218,7 @@
name
- 617367
+ 617366
@@ -18222,7 +18232,7 @@
1
2
- 1439432
+ 1439430
2
@@ -18243,7 +18253,7 @@
1
2
- 1441780
+ 1441778
@@ -18290,7 +18300,7 @@
1
2
- 348935
+ 348934
2
@@ -18326,12 +18336,12 @@
2
3
- 118296
+ 118295
3
5
- 56308
+ 56307
5
@@ -18352,7 +18362,7 @@
1
2
- 502840
+ 502839
2
@@ -18372,15 +18382,15 @@
globalvariables
- 425557
+ 425556
id
- 425546
+ 425545
type_id
- 1634
+ 1633
name
@@ -18398,7 +18408,7 @@
1
2
- 425535
+ 425534
2
@@ -18419,7 +18429,7 @@
1
2
- 425546
+ 425545
@@ -18435,7 +18445,7 @@
1
2
- 1147
+ 1146
2
@@ -18471,7 +18481,7 @@
1
2
- 1179
+ 1178
2
@@ -18507,12 +18517,12 @@
1
2
- 399362
+ 399363
2
1044
- 5652
+ 5651
@@ -18528,12 +18538,12 @@
1
2
- 404349
+ 404350
2
15
- 665
+ 664
@@ -18606,7 +18616,7 @@
2
3
- 7925
+ 7926
3
@@ -18647,7 +18657,7 @@
1
2
- 38830
+ 38831
2
@@ -18678,7 +18688,7 @@
1
2
- 63261
+ 63262
2
@@ -18812,11 +18822,11 @@
orphaned_variables
- 55893
+ 55894
var
- 55893
+ 55894
function
@@ -18834,7 +18844,7 @@
1
2
- 55893
+ 55894
@@ -19578,7 +19588,7 @@
1
2
- 329601
+ 329600
2
@@ -19599,7 +19609,7 @@
1
2
- 329601
+ 329600
2
@@ -19652,7 +19662,7 @@
1
2
- 329601
+ 329600
2
@@ -20439,15 +20449,15 @@
derivedtypes
- 3188505
+ 3188501
id
- 3188505
+ 3188501
name
- 1506662
+ 1506660
kind
@@ -20455,7 +20465,7 @@
type_id
- 2055212
+ 2055209
@@ -20469,7 +20479,7 @@
1
2
- 3188505
+ 3188501
@@ -20485,7 +20495,7 @@
1
2
- 3188505
+ 3188501
@@ -20501,7 +20511,7 @@
1
2
- 3188505
+ 3188501
@@ -20517,12 +20527,12 @@
1
2
- 1369020
+ 1369018
2
10
- 113827
+ 113826
10
@@ -20543,7 +20553,7 @@
1
2
- 1506662
+ 1506660
@@ -20559,7 +20569,7 @@
1
2
- 1369154
+ 1369153
2
@@ -20708,7 +20718,7 @@
1
2
- 1388260
+ 1388258
2
@@ -20739,7 +20749,7 @@
1
2
- 1389875
+ 1389873
2
@@ -20770,7 +20780,7 @@
1
2
- 1390144
+ 1390142
2
@@ -20795,11 +20805,11 @@
pointerishsize
- 2366958
+ 2366955
id
- 2366958
+ 2366955
size
@@ -20821,7 +20831,7 @@
1
2
- 2366958
+ 2366955
@@ -20837,7 +20847,7 @@
1
2
- 2366958
+ 2366955
@@ -21317,15 +21327,15 @@
typedefbase
- 2175691
+ 2175706
id
- 2175691
+ 2175706
type_id
- 905385
+ 905391
@@ -21339,7 +21349,7 @@
1
2
- 2175691
+ 2175706
@@ -21355,7 +21365,7 @@
1
2
- 730529
+ 730534
2
@@ -21380,19 +21390,19 @@
decltypes
- 175625
+ 175649
id
- 15417
+ 15374
expr
- 161560
+ 161629
base_type
- 11309
+ 11280
parentheses_would_change_meaning
@@ -21410,27 +21420,27 @@
1
2
- 2185
+ 2137
2
3
- 6656
+ 6659
3
4
- 2161
+ 2162
4
5
- 1055
+ 1056
5
9
- 1212
+ 1213
9
@@ -21456,7 +21466,7 @@
1
2
- 15417
+ 15374
@@ -21472,7 +21482,7 @@
1
2
- 15417
+ 15374
@@ -21488,16 +21498,16 @@
1
2
- 148024
+ 148087
2
3
- 13057
+ 13063
3
- 5
+ 4
478
@@ -21514,16 +21524,16 @@
1
2
- 148024
+ 148087
2
3
- 13057
+ 13063
3
- 5
+ 4
478
@@ -21540,7 +21550,7 @@
1
2
- 161560
+ 161629
@@ -21556,12 +21566,12 @@
1
2
- 9799
+ 9787
2
3
- 1336
+ 1320
3
@@ -21582,12 +21592,12 @@
1
2
- 981
+ 965
2
3
- 5518
+ 5504
3
@@ -21597,17 +21607,17 @@
4
5
- 1113
+ 1114
5
8
- 948
+ 949
8
41
- 857
+ 858
42
@@ -21628,7 +21638,7 @@
1
2
- 11309
+ 11280
@@ -21647,8 +21657,8 @@
8
- 1867
- 1868
+ 1861
+ 1862
8
@@ -21689,8 +21699,8 @@
8
- 1369
- 1370
+ 1365
+ 1366
8
@@ -21701,15 +21711,15 @@
usertypes
- 4992117
+ 4987434
id
- 4992117
+ 4987434
name
- 1074915
+ 1074810
kind
@@ -21727,7 +21737,7 @@
1
2
- 4992117
+ 4987434
@@ -21743,7 +21753,7 @@
1
2
- 4992117
+ 4987434
@@ -21759,22 +21769,22 @@
1
2
- 742932
+ 743259
2
3
- 197244
+ 196974
3
7
- 86104
+ 85996
7
- 29574
- 48633
+ 30181
+ 48579
@@ -21790,12 +21800,12 @@
1
2
- 1007695
+ 1008457
2
10
- 67220
+ 66353
@@ -21839,8 +21849,8 @@
13
- 4522
- 4523
+ 4581
+ 4582
13
@@ -21849,23 +21859,23 @@
13
- 20080
- 20081
+ 20064
+ 20065
13
- 82457
- 82458
+ 82095
+ 82096
13
- 85575
- 85576
+ 85548
+ 85549
13
- 151140
- 151141
+ 151139
+ 151140
13
@@ -21905,8 +21915,8 @@
13
- 832
- 833
+ 771
+ 772
13
@@ -21915,8 +21925,8 @@
13
- 3087
- 3088
+ 3066
+ 3067
13
@@ -21925,8 +21935,8 @@
13
- 10837
- 10838
+ 10829
+ 10830
13
@@ -21935,8 +21945,8 @@
13
- 51364
- 51365
+ 51345
+ 51346
13
@@ -21947,11 +21957,11 @@
usertypesize
- 1631914
+ 1632137
id
- 1631914
+ 1632137
size
@@ -21973,7 +21983,7 @@
1
2
- 1631914
+ 1632137
@@ -21989,7 +21999,7 @@
1
2
- 1631914
+ 1632137
@@ -22049,7 +22059,7 @@
1733
- 92713
+ 92729
67
@@ -22125,8 +22135,8 @@
13
- 107899
- 107900
+ 107915
+ 107916
13
@@ -22247,11 +22257,11 @@
usertype_alias_kind
- 2175733
+ 2175749
id
- 2175691
+ 2175706
alias_kind
@@ -22269,7 +22279,7 @@
1
2
- 2175648
+ 2175663
2
@@ -22305,11 +22315,11 @@
nontype_template_parameters
- 966305
+ 966312
id
- 966305
+ 966312
@@ -22389,15 +22399,15 @@
mangled_name
- 7780866
+ 7776179
id
- 7780866
+ 7776179
mangled_name
- 5325726
+ 5325040
is_complete
@@ -22415,7 +22425,7 @@
1
2
- 7780866
+ 7776179
@@ -22431,7 +22441,7 @@
1
2
- 7780866
+ 7776179
@@ -22447,17 +22457,17 @@
1
2
- 4731594
+ 4731503
2
3
- 459569
+ 459353
3
- 8985
- 134562
+ 9032
+ 134183
@@ -22473,7 +22483,7 @@
1
2
- 5325726
+ 5325040
@@ -22492,8 +22502,8 @@
13
- 570981
- 570982
+ 570633
+ 570634
13
@@ -22513,8 +22523,8 @@
13
- 391611
- 391612
+ 391559
+ 391560
13
@@ -22525,59 +22535,59 @@
is_pod_class
- 747542
+ 747547
id
- 747542
+ 747547
is_standard_layout_class
- 1344636
+ 1344858
id
- 1344636
+ 1344858
is_complete
- 1611052
+ 1611274
id
- 1611052
+ 1611274
is_class_template
- 292182
+ 292183
id
- 292182
+ 292183
class_instantiation
- 1327526
+ 1327030
to
- 1323611
+ 1323128
from
- 91713
+ 91605
@@ -22591,12 +22601,12 @@
1
2
- 1320861
+ 1320392
2
8
- 2750
+ 2736
@@ -22612,42 +22622,42 @@
1
2
- 26741
+ 26728
2
3
- 16676
+ 16622
3
4
- 9130
+ 9103
4
5
- 5987
+ 5974
5
7
- 7667
+ 7694
7
10
- 6922
+ 6949
10
17
- 7423
+ 7356
17
53
- 6922
+ 6936
53
@@ -22662,11 +22672,11 @@
class_template_argument
- 3502880
+ 3501700
type_id
- 1631792
+ 1631215
index
@@ -22674,7 +22684,7 @@
arg_type
- 1034653
+ 1034467
@@ -22688,27 +22698,27 @@
1
2
- 679139
+ 678884
2
3
- 490293
+ 490105
3
4
- 308844
+ 308751
4
7
- 124144
+ 124118
7
113
- 29369
+ 29356
@@ -22724,22 +22734,22 @@
1
2
- 713697
+ 713442
2
3
- 505642
+ 505454
3
4
- 306907
+ 306813
4
113
- 105544
+ 105504
@@ -22779,12 +22789,12 @@
643
- 6821
+ 6819
121
- 11332
- 120452
+ 11329
+ 120409
54
@@ -22829,8 +22839,8 @@
121
- 10038
- 43717
+ 10035
+ 43710
40
@@ -22847,26 +22857,26 @@
1
2
- 648834
+ 649080
2
3
- 212417
+ 212187
3
4
- 62194
+ 62153
4
11
- 78830
+ 78667
11
- 11558
+ 11553
32377
@@ -22883,12 +22893,12 @@
1
2
- 912540
+ 912381
2
3
- 98879
+ 98852
3
@@ -22903,11 +22913,11 @@
class_template_argument_value
- 643229
+ 643234
type_id
- 259534
+ 259536
index
@@ -22915,7 +22925,7 @@
arg_value
- 643057
+ 643062
@@ -22929,12 +22939,12 @@
1
2
- 196466
+ 196467
2
3
- 54690
+ 54691
3
@@ -22955,7 +22965,7 @@
1
2
- 186541
+ 186543
2
@@ -23098,7 +23108,7 @@
1
2
- 642886
+ 642890
2
@@ -23119,7 +23129,7 @@
1
2
- 643057
+ 643062
@@ -23129,15 +23139,15 @@
is_proxy_class_for
- 61259
+ 62059
id
- 61259
+ 62059
templ_param_id
- 60135
+ 58631
@@ -23151,7 +23161,7 @@
1
2
- 61259
+ 62059
@@ -23167,12 +23177,12 @@
1
2
- 59620
+ 57710
2
- 21
- 514
+ 79
+ 921
@@ -23182,11 +23192,11 @@
type_mentions
- 5507865
+ 5507858
id
- 5507865
+ 5507858
type_id
@@ -23194,7 +23204,7 @@
location
- 5462043
+ 5462036
kind
@@ -23212,7 +23222,7 @@
1
2
- 5507865
+ 5507858
@@ -23228,7 +23238,7 @@
1
2
- 5507865
+ 5507858
@@ -23244,7 +23254,7 @@
1
2
- 5507865
+ 5507858
@@ -23295,7 +23305,7 @@
27
8555
- 19716
+ 19715
@@ -23346,7 +23356,7 @@
27
8555
- 19716
+ 19715
@@ -23378,7 +23388,7 @@
1
2
- 5416221
+ 5416214
2
@@ -23399,7 +23409,7 @@
1
2
- 5416221
+ 5416214
2
@@ -23420,7 +23430,7 @@
1
2
- 5462043
+ 5462036
@@ -23478,26 +23488,26 @@
is_function_template
- 1418399
+ 1418397
id
- 1418399
+ 1418397
function_instantiation
- 1226957
+ 1226965
to
- 1226957
+ 1226965
from
- 230191
+ 230193
@@ -23511,7 +23521,7 @@
1
2
- 1226957
+ 1226965
@@ -23527,7 +23537,7 @@
1
2
- 140013
+ 140014
2
@@ -23557,11 +23567,11 @@
function_template_argument
- 3133404
+ 3133426
function_id
- 1832637
+ 1832651
index
@@ -23569,7 +23579,7 @@
arg_type
- 375790
+ 375792
@@ -23583,22 +23593,22 @@
1
2
- 987399
+ 987407
2
3
- 521002
+ 521006
3
4
- 216658
+ 216659
4
15
- 107577
+ 107578
@@ -23614,17 +23624,17 @@
1
2
- 1011544
+ 1011551
2
3
- 518596
+ 518600
3
4
- 213908
+ 213910
4
@@ -23767,12 +23777,12 @@
1
2
- 220396
+ 220397
2
3
- 33209
+ 33210
3
@@ -23782,7 +23792,7 @@
4
6
- 28569
+ 28570
6
@@ -23813,7 +23823,7 @@
1
2
- 323848
+ 323851
2
@@ -23823,7 +23833,7 @@
3
15
- 11427
+ 11428
@@ -23833,11 +23843,11 @@
function_template_argument_value
- 570967
+ 570971
function_id
- 248149
+ 248151
index
@@ -23845,7 +23855,7 @@
arg_value
- 567573
+ 567577
@@ -23859,7 +23869,7 @@
1
2
- 190923
+ 190925
2
@@ -23885,7 +23895,7 @@
1
2
- 182202
+ 182203
2
@@ -24038,7 +24048,7 @@
1
2
- 564179
+ 564183
2
@@ -24059,7 +24069,7 @@
1
2
- 567573
+ 567577
@@ -24163,11 +24173,11 @@
variable_template_argument
- 525811
+ 525810
variable_id
- 267211
+ 267210
index
@@ -24175,7 +24185,7 @@
arg_type
- 257120
+ 257119
@@ -24220,12 +24230,12 @@
1
2
- 122169
+ 122168
2
3
- 99296
+ 99295
3
@@ -25274,7 +25284,7 @@
concept_id
- 81869
+ 81870
index
@@ -25296,12 +25306,12 @@
1
2
- 49813
+ 49814
2
3
- 26451
+ 26452
3
@@ -25543,7 +25553,7 @@
1
2
- 65
+ 66
2
@@ -25632,15 +25642,15 @@
routinetypes
- 762063
+ 762068
id
- 762063
+ 762068
return_type
- 357960
+ 357963
@@ -25654,7 +25664,7 @@
1
2
- 762063
+ 762068
@@ -25670,7 +25680,7 @@
1
2
- 295365
+ 295367
2
@@ -25690,7 +25700,7 @@
routinetypeargs
- 1165647
+ 1165645
routine
@@ -25731,7 +25741,7 @@
4
5
- 48935
+ 48934
5
@@ -25772,7 +25782,7 @@
4
5
- 40142
+ 40141
5
@@ -26000,12 +26010,12 @@
6
8
- 9503
+ 9502
8
13
- 9503
+ 9502
13
@@ -26031,7 +26041,7 @@
1
2
- 78154
+ 78153
2
@@ -26041,7 +26051,7 @@
3
5
- 9503
+ 9502
5
@@ -26212,15 +26222,15 @@
specifiers
- 7131
+ 8341
id
- 7131
+ 8341
str
- 7131
+ 8341
@@ -26234,7 +26244,7 @@
1
2
- 7131
+ 8341
@@ -26250,7 +26260,7 @@
1
2
- 7131
+ 8341
@@ -26260,11 +26270,11 @@
typespecifiers
- 988078
+ 991496
type_id
- 981495
+ 984912
spec_id
@@ -26282,7 +26292,7 @@
1
2
- 974911
+ 978328
2
@@ -26331,8 +26341,8 @@
13
- 17156
- 17157
+ 17408
+ 17409
13
@@ -26348,15 +26358,15 @@
funspecifiers
- 9758473
+ 9728427
func_id
- 3343789
+ 3340505
spec_id
- 859
+ 816
@@ -26370,32 +26380,32 @@
1
2
- 431941
+ 437873
2
3
- 686449
+ 677260
3
4
- 1416678
+ 1424206
4
5
- 458148
+ 459483
5
6
- 233886
+ 225080
6
8
- 116685
+ 116600
@@ -26438,11 +26448,6 @@
563
42
-
- 704
- 705
- 42
-
1589
1590
@@ -26489,8 +26494,8 @@
42
- 42404
- 42405
+ 42407
+ 42408
42
@@ -26511,11 +26516,11 @@
varspecifiers
- 2898034
+ 2898030
var_id
- 2545003
+ 2544999
spec_id
@@ -26533,12 +26538,12 @@
1
2
- 2191971
+ 2191969
2
3
- 353031
+ 353030
@@ -26642,11 +26647,11 @@
attributes
- 629816
+ 629815
id
- 629816
+ 629815
kind
@@ -26662,7 +26667,7 @@
location
- 623358
+ 623357
@@ -26676,7 +26681,7 @@
1
2
- 629816
+ 629815
@@ -26692,7 +26697,7 @@
1
2
- 629816
+ 629815
@@ -26708,7 +26713,7 @@
1
2
- 629816
+ 629815
@@ -26724,7 +26729,7 @@
1
2
- 629816
+ 629815
@@ -27112,7 +27117,7 @@
1
2
- 617034
+ 617033
2
@@ -27133,7 +27138,7 @@
1
2
- 623358
+ 623357
@@ -27170,7 +27175,7 @@
1
2
- 623358
+ 623357
@@ -27428,7 +27433,7 @@
2
3
- 2302
+ 2303
@@ -27444,7 +27449,7 @@
1
2
- 79046
+ 79047
2
@@ -27465,7 +27470,7 @@
1
2
- 80658
+ 80659
2
@@ -27641,7 +27646,7 @@
1
2
- 91726
+ 91727
2
@@ -27854,15 +27859,15 @@
attribute_arg_constant
- 89599
+ 89600
arg
- 89599
+ 89600
constant
- 89599
+ 89600
@@ -27876,7 +27881,7 @@
1
2
- 89599
+ 89600
@@ -27892,7 +27897,7 @@
1
2
- 89599
+ 89600
@@ -28071,15 +28076,15 @@
funcattributes
- 824910
+ 824909
func_id
- 776473
+ 776472
spec_id
- 598601
+ 598600
@@ -28114,7 +28119,7 @@
1
2
- 555008
+ 555007
2
@@ -28260,15 +28265,15 @@
unspecifiedtype
- 8350274
+ 8345603
type_id
- 8350274
+ 8345603
unspecified_type_id
- 4803705
+ 4799035
@@ -28282,7 +28287,7 @@
1
2
- 8350274
+ 8345603
@@ -28298,17 +28303,17 @@
1
2
- 3203138
+ 3198462
2
3
- 1309007
+ 1309012
3
6271
- 291558
+ 291559
@@ -28318,11 +28323,11 @@
member
- 4687174
+ 4687208
parent
- 562417
+ 562422
index
@@ -28330,7 +28335,7 @@
child
- 4569973
+ 4570006
@@ -28344,7 +28349,7 @@
1
2
- 233198
+ 233200
2
@@ -28359,17 +28364,17 @@
4
5
- 37763
+ 37764
5
7
- 47859
+ 47860
7
11
- 43348
+ 43349
11
@@ -28384,7 +28389,7 @@
19
53
- 42317
+ 42318
53
@@ -28405,7 +28410,7 @@
1
2
- 233069
+ 233071
2
@@ -28445,7 +28450,7 @@
19
53
- 42317
+ 42318
53
@@ -28603,7 +28608,7 @@
1
2
- 4569973
+ 4570006
@@ -28619,12 +28624,12 @@
1
2
- 4482115
+ 4482148
2
13
- 87857
+ 87858
@@ -28634,15 +28639,15 @@
enclosingfunction
- 144782
+ 144783
child
- 144782
+ 144783
parent
- 89962
+ 89963
@@ -28656,7 +28661,7 @@
1
2
- 144782
+ 144783
@@ -28682,7 +28687,7 @@
3
4
- 19375
+ 19376
4
@@ -28697,15 +28702,15 @@
derivations
- 599880
+ 599885
derivation
- 599880
+ 599885
sub
- 572471
+ 572475
index
@@ -28713,11 +28718,11 @@
super
- 296052
+ 296054
location
- 44637
+ 44638
@@ -28731,7 +28736,7 @@
1
2
- 599880
+ 599885
@@ -28747,7 +28752,7 @@
1
2
- 599880
+ 599885
@@ -28763,7 +28768,7 @@
1
2
- 599880
+ 599885
@@ -28779,7 +28784,7 @@
1
2
- 599880
+ 599885
@@ -28795,7 +28800,7 @@
1
2
- 551634
+ 551638
2
@@ -28816,7 +28821,7 @@
1
2
- 551634
+ 551638
2
@@ -28837,7 +28842,7 @@
1
2
- 551634
+ 551638
2
@@ -28858,7 +28863,7 @@
1
2
- 551634
+ 551638
2
@@ -29018,7 +29023,7 @@
1
2
- 283937
+ 283939
2
@@ -29039,7 +29044,7 @@
1
2
- 283937
+ 283939
2
@@ -29060,7 +29065,7 @@
1
2
- 295493
+ 295496
2
@@ -29081,7 +29086,7 @@
1
2
- 289522
+ 289524
2
@@ -29174,7 +29179,7 @@
1
2
- 44637
+ 44638
@@ -29215,11 +29220,11 @@
derspecifiers
- 602115
+ 602119
der_id
- 599322
+ 599326
spec_id
@@ -29237,7 +29242,7 @@
1
2
- 596529
+ 596534
2
@@ -29283,11 +29288,11 @@
direct_base_offsets
- 565940
+ 565944
der_id
- 565940
+ 565944
offset
@@ -29305,7 +29310,7 @@
1
2
- 565940
+ 565944
@@ -29502,19 +29507,19 @@
frienddecls
- 883302
+ 883308
id
- 883302
+ 883308
type_id
- 53487
+ 53488
decl_id
- 98039
+ 98169
location
@@ -29532,7 +29537,7 @@
1
2
- 883302
+ 883308
@@ -29548,7 +29553,7 @@
1
2
- 883302
+ 883308
@@ -29564,7 +29569,7 @@
1
2
- 883302
+ 883308
@@ -29713,12 +29718,12 @@
1
2
- 60361
+ 60620
2
3
- 7647
+ 7518
3
@@ -29754,12 +29759,12 @@
1
2
- 60361
+ 60620
2
3
- 7647
+ 7518
3
@@ -29795,7 +29800,7 @@
1
2
- 97180
+ 97310
2
@@ -29862,7 +29867,7 @@
2
- 2129
+ 2132
429
@@ -29873,19 +29878,19 @@
comments
- 11290145
+ 11290131
id
- 11290145
+ 11290131
contents
- 4299060
+ 4299054
location
- 11290145
+ 11290131
@@ -29899,7 +29904,7 @@
1
2
- 11290145
+ 11290131
@@ -29915,7 +29920,7 @@
1
2
- 11290145
+ 11290131
@@ -29931,7 +29936,7 @@
1
2
- 3932687
+ 3932682
2
@@ -29957,7 +29962,7 @@
1
2
- 3932687
+ 3932682
2
@@ -29983,7 +29988,7 @@
1
2
- 11290145
+ 11290131
@@ -29999,7 +30004,7 @@
1
2
- 11290145
+ 11290131
@@ -30009,15 +30014,15 @@
commentbinding
- 3316594
+ 3316590
id
- 3263044
+ 3263040
element
- 3173570
+ 3173566
@@ -30031,7 +30036,7 @@
1
2
- 3231291
+ 3231287
2
@@ -30052,7 +30057,7 @@
1
2
- 3030546
+ 3030542
2
@@ -30067,15 +30072,15 @@
exprconv
- 9603748
+ 9603735
converted
- 9603643
+ 9603630
conversion
- 9603748
+ 9603735
@@ -30089,7 +30094,7 @@
1
2
- 9603537
+ 9603525
2
@@ -30110,7 +30115,7 @@
1
2
- 9603748
+ 9603735
@@ -30120,22 +30125,22 @@
compgenerated
- 10714603
+ 10714334
id
- 10714603
+ 10714334
synthetic_destructor_call
- 1791768
+ 1791782
element
- 1334382
+ 1334392
i
@@ -30143,7 +30148,7 @@
destructor_call
- 1791768
+ 1791782
@@ -30157,12 +30162,12 @@
1
2
- 888204
+ 888211
2
3
- 438890
+ 438893
3
@@ -30183,12 +30188,12 @@
1
2
- 888204
+ 888211
2
3
- 438890
+ 438893
3
@@ -30341,7 +30346,7 @@
1
2
- 1791768
+ 1791782
@@ -30357,7 +30362,7 @@
1
2
- 1791768
+ 1791782
@@ -30436,7 +30441,7 @@
namespacembrs
- 2026146
+ 2025652
parentid
@@ -30444,7 +30449,7 @@
memberid
- 2026146
+ 2025652
@@ -30488,37 +30493,37 @@
14
22
- 785
-
-
- 22
- 36
- 785
-
-
- 36
- 55
812
- 56
- 115
+ 22
+ 37
+ 799
+
+
+ 37
+ 57
+ 799
+
+
+ 57
+ 118
785
- 115
- 244
+ 118
+ 255
+ 812
+
+
+ 256
+ 828
785
- 252
- 673
- 785
-
-
- 674
- 42760
- 392
+ 829
+ 42759
+ 338
@@ -30534,7 +30539,7 @@
1
2
- 2026146
+ 2025652
@@ -30544,11 +30549,11 @@
exprparents
- 19401302
+ 19401276
expr_id
- 19401302
+ 19401276
child_index
@@ -30556,7 +30561,7 @@
parent_id
- 12904791
+ 12904774
@@ -30570,7 +30575,7 @@
1
2
- 19401302
+ 19401276
@@ -30586,7 +30591,7 @@
1
2
- 19401302
+ 19401276
@@ -30704,17 +30709,17 @@
1
2
- 7374643
+ 7374634
2
3
- 5068855
+ 5068849
3
712
- 461292
+ 461291
@@ -30730,17 +30735,17 @@
1
2
- 7374643
+ 7374634
2
3
- 5068855
+ 5068849
3
712
- 461292
+ 461291
@@ -30750,22 +30755,22 @@
expr_isload
- 6961485
+ 6961476
expr_id
- 6961485
+ 6961476
conversionkinds
- 6048224
+ 6048225
expr_id
- 6048224
+ 6048225
kind
@@ -30783,7 +30788,7 @@
1
2
- 6048224
+ 6048225
@@ -30827,8 +30832,8 @@
1
- 5829769
- 5829770
+ 5829770
+ 5829771
1
@@ -30839,11 +30844,11 @@
iscall
- 6219922
+ 6219948
caller
- 6219922
+ 6219948
kind
@@ -30861,7 +30866,7 @@
1
2
- 6219922
+ 6219948
@@ -30885,8 +30890,8 @@
23
- 268068
- 268069
+ 268067
+ 268068
23
@@ -30897,11 +30902,11 @@
numtemplatearguments
- 723397
+ 723402
expr_id
- 723397
+ 723402
num
@@ -30919,7 +30924,7 @@
1
2
- 723397
+ 723402
@@ -31028,15 +31033,15 @@
namequalifiers
- 3258064
+ 3258067
id
- 3258064
+ 3258067
qualifiableelement
- 3258064
+ 3258067
qualifyingelement
@@ -31044,7 +31049,7 @@
location
- 591859
+ 591864
@@ -31058,7 +31063,7 @@
1
2
- 3258064
+ 3258067
@@ -31074,7 +31079,7 @@
1
2
- 3258064
+ 3258067
@@ -31090,7 +31095,7 @@
1
2
- 3258064
+ 3258067
@@ -31106,7 +31111,7 @@
1
2
- 3258064
+ 3258067
@@ -31122,7 +31127,7 @@
1
2
- 3258064
+ 3258067
@@ -31138,7 +31143,7 @@
1
2
- 3258064
+ 3258067
@@ -31154,7 +31159,7 @@
1
2
- 33831
+ 33832
2
@@ -31172,7 +31177,7 @@
3782
- 6807
+ 6806
41956
115
@@ -31190,7 +31195,7 @@
1
2
- 33831
+ 33832
2
@@ -31208,7 +31213,7 @@
3782
- 6807
+ 6806
41956
115
@@ -31257,17 +31262,17 @@
1
2
- 84982
+ 85006
2
6
- 40565
+ 40543
6
7
- 427774
+ 427777
7
@@ -31288,17 +31293,17 @@
1
2
- 84982
+ 85006
2
6
- 40565
+ 40543
6
7
- 427774
+ 427777
7
@@ -31319,7 +31324,7 @@
1
2
- 119345
+ 119346
2
@@ -31329,7 +31334,7 @@
4
5
- 445209
+ 445212
5
@@ -31344,15 +31349,15 @@
varbind
- 8226118
+ 8226107
expr
- 8226118
+ 8226107
var
- 1047519
+ 1047517
@@ -31366,7 +31371,7 @@
1
2
- 8226118
+ 8226107
@@ -31437,15 +31442,15 @@
funbind
- 6230323
+ 6230372
expr
- 6227671
+ 6227720
fun
- 295537
+ 295540
@@ -31459,7 +31464,7 @@
1
2
- 6225019
+ 6225068
2
@@ -31480,7 +31485,7 @@
1
2
- 194319
+ 194320
2
@@ -31510,11 +31515,11 @@
expr_allocator
- 57053
+ 57054
expr
- 57053
+ 57054
func
@@ -31536,7 +31541,7 @@
1
2
- 57053
+ 57054
@@ -31552,7 +31557,7 @@
1
2
- 57053
+ 57054
@@ -31783,15 +31788,15 @@
expr_cond_guard
- 896445
+ 896444
cond
- 896445
+ 896444
guard
- 896445
+ 896444
@@ -31805,7 +31810,7 @@
1
2
- 896445
+ 896444
@@ -31821,7 +31826,7 @@
1
2
- 896445
+ 896444
@@ -31831,15 +31836,15 @@
expr_cond_true
- 896442
+ 896441
cond
- 896442
+ 896441
true
- 896442
+ 896441
@@ -31853,7 +31858,7 @@
1
2
- 896442
+ 896441
@@ -31869,7 +31874,7 @@
1
2
- 896442
+ 896441
@@ -31879,15 +31884,15 @@
expr_cond_false
- 896445
+ 896444
cond
- 896445
+ 896444
false
- 896445
+ 896444
@@ -31901,7 +31906,7 @@
1
2
- 896445
+ 896444
@@ -31917,7 +31922,7 @@
1
2
- 896445
+ 896444
@@ -31927,11 +31932,11 @@
values
- 14099266
+ 14099248
id
- 14099266
+ 14099248
str
@@ -31949,7 +31954,7 @@
1
2
- 14099266
+ 14099248
@@ -31995,11 +32000,11 @@
valuetext
- 6605852
+ 6605626
id
- 6605852
+ 6605626
text
@@ -32017,7 +32022,7 @@
1
2
- 6605852
+ 6605626
@@ -32047,7 +32052,7 @@
7
- 593266
+ 593260
27560
@@ -32058,15 +32063,15 @@
valuebind
- 14484502
+ 14484483
val
- 14099266
+ 14099248
expr
- 14484502
+ 14484483
@@ -32080,7 +32085,7 @@
1
2
- 13735597
+ 13735579
2
@@ -32101,7 +32106,7 @@
1
2
- 14484502
+ 14484483
@@ -32111,11 +32116,11 @@
fieldoffsets
- 1441780
+ 1441778
id
- 1441780
+ 1441778
byteoffset
@@ -32137,7 +32142,7 @@
1
2
- 1441780
+ 1441778
@@ -32153,7 +32158,7 @@
1
2
- 1441780
+ 1441778
@@ -32538,23 +32543,23 @@
initialisers
- 2336673
+ 2336670
init
- 2336673
+ 2336670
var
- 983091
+ 983090
expr
- 2336673
+ 2336670
location
- 539035
+ 539034
@@ -32568,7 +32573,7 @@
1
2
- 2336673
+ 2336670
@@ -32584,7 +32589,7 @@
1
2
- 2336673
+ 2336670
@@ -32600,7 +32605,7 @@
1
2
- 2336673
+ 2336670
@@ -32616,7 +32621,7 @@
1
2
- 865934
+ 865933
2
@@ -32642,7 +32647,7 @@
1
2
- 865934
+ 865933
2
@@ -32668,7 +32673,7 @@
1
2
- 983082
+ 983081
2
@@ -32689,7 +32694,7 @@
1
2
- 2336673
+ 2336670
@@ -32705,7 +32710,7 @@
1
2
- 2336673
+ 2336670
@@ -32721,7 +32726,7 @@
1
2
- 2336673
+ 2336670
@@ -32768,7 +32773,7 @@
1
2
- 470682
+ 470681
2
@@ -32819,26 +32824,26 @@
braced_initialisers
- 74272
+ 74303
init
- 74272
+ 74303
expr_ancestor
- 1798179
+ 1798193
exp
- 1798179
+ 1798193
ancestor
- 899966
+ 899973
@@ -32852,7 +32857,7 @@
1
2
- 1798179
+ 1798193
@@ -32873,12 +32878,12 @@
2
3
- 870862
+ 870868
3
19
- 10792
+ 10793
@@ -32888,11 +32893,11 @@
exprs
- 25135886
+ 25135853
id
- 25135886
+ 25135853
kind
@@ -32900,7 +32905,7 @@
location
- 11535483
+ 11535468
@@ -32914,7 +32919,7 @@
1
2
- 25135886
+ 25135853
@@ -32930,7 +32935,7 @@
1
2
- 25135886
+ 25135853
@@ -33108,17 +33113,17 @@
1
2
- 9705673
+ 9705660
2
3
- 898510
+ 898509
3
16
- 866991
+ 866990
16
@@ -33139,17 +33144,17 @@
1
2
- 9853416
+ 9853403
2
3
- 844293
+ 844292
3
32
- 837774
+ 837773
@@ -33159,15 +33164,15 @@
expr_reuse
- 907876
+ 907883
reuse
- 907876
+ 907883
original
- 907876
+ 907883
value_category
@@ -33185,7 +33190,7 @@
1
2
- 907876
+ 907883
@@ -33201,7 +33206,7 @@
1
2
- 907876
+ 907883
@@ -33217,7 +33222,7 @@
1
2
- 907876
+ 907883
@@ -33233,7 +33238,7 @@
1
2
- 907876
+ 907883
@@ -33285,11 +33290,11 @@
expr_types
- 25135886
+ 25135853
id
- 25135886
+ 25135853
typeid
@@ -33311,7 +33316,7 @@
1
2
- 25135886
+ 25135853
@@ -33327,7 +33332,7 @@
1
2
- 25135886
+ 25135853
@@ -33472,11 +33477,11 @@
new_allocated_type
- 58256
+ 58257
expr
- 58256
+ 58257
type_id
@@ -33494,7 +33499,7 @@
1
2
- 58256
+ 58257
@@ -33515,7 +33520,7 @@
2
3
- 18258
+ 18259
3
@@ -34600,15 +34605,15 @@
condition_decl_bind
- 438290
+ 438294
expr
- 438290
+ 438294
decl
- 438290
+ 438294
@@ -34622,7 +34627,7 @@
1
2
- 438290
+ 438294
@@ -34638,7 +34643,7 @@
1
2
- 438290
+ 438294
@@ -34648,11 +34653,11 @@
typeid_bind
- 60404
+ 60405
expr
- 60404
+ 60405
type_id
@@ -34670,7 +34675,7 @@
1
2
- 60404
+ 60405
@@ -34706,11 +34711,11 @@
uuidof_bind
- 27728
+ 27727
expr
- 27728
+ 27727
type_id
@@ -34728,7 +34733,7 @@
1
2
- 27728
+ 27727
@@ -34759,11 +34764,11 @@
sizeof_bind
- 245235
+ 245234
expr
- 245235
+ 245234
type_id
@@ -34781,7 +34786,7 @@
1
2
- 245235
+ 245234
@@ -36365,11 +36370,11 @@
stmts
- 6324268
+ 6324260
id
- 6324268
+ 6324260
kind
@@ -36377,7 +36382,7 @@
location
- 2966233
+ 2966229
@@ -36391,7 +36396,7 @@
1
2
- 6324268
+ 6324260
@@ -36407,7 +36412,7 @@
1
2
- 6324268
+ 6324260
@@ -36635,7 +36640,7 @@
1
2
- 2357136
+ 2357133
2
@@ -36645,7 +36650,7 @@
3
8
- 228596
+ 228595
8
@@ -36666,7 +36671,7 @@
1
2
- 2892635
+ 2892631
2
@@ -36775,6 +36780,17 @@
+
+ type_is_vla
+ 47
+
+
+ type_id
+ 47
+
+
+
+
if_initialization
403
@@ -36825,15 +36841,15 @@
if_then
- 987521
+ 987520
if_stmt
- 987521
+ 987520
then_id
- 987521
+ 987520
@@ -36847,7 +36863,7 @@
1
2
- 987521
+ 987520
@@ -36863,7 +36879,7 @@
1
2
- 987521
+ 987520
@@ -36873,15 +36889,15 @@
if_else
- 468501
+ 468505
if_stmt
- 468501
+ 468505
else_id
- 468501
+ 468505
@@ -36895,7 +36911,7 @@
1
2
- 468501
+ 468505
@@ -36911,7 +36927,7 @@
1
2
- 468501
+ 468505
@@ -37305,11 +37321,11 @@
switch_case
- 896207
+ 896214
switch_stmt
- 441450
+ 441453
index
@@ -37317,7 +37333,7 @@
case_id
- 896207
+ 896214
@@ -37336,7 +37352,7 @@
2
3
- 438359
+ 438363
3
@@ -37362,7 +37378,7 @@
2
3
- 438359
+ 438363
3
@@ -37525,7 +37541,7 @@
1
2
- 896207
+ 896214
@@ -37541,7 +37557,7 @@
1
2
- 896207
+ 896214
@@ -37551,15 +37567,15 @@
switch_body
- 441450
+ 441453
switch_stmt
- 441450
+ 441453
body_id
- 441450
+ 441453
@@ -37573,7 +37589,7 @@
1
2
- 441450
+ 441453
@@ -37589,7 +37605,7 @@
1
2
- 441450
+ 441453
@@ -37791,11 +37807,11 @@
stmtparents
- 5536444
+ 5536437
id
- 5536444
+ 5536437
index
@@ -37803,7 +37819,7 @@
parent
- 2349075
+ 2349072
@@ -37817,7 +37833,7 @@
1
2
- 5536444
+ 5536437
@@ -37833,7 +37849,7 @@
1
2
- 5536444
+ 5536437
@@ -37971,12 +37987,12 @@
1
2
- 1349054
+ 1349052
2
3
- 508948
+ 508947
3
@@ -37991,7 +38007,7 @@
6
17
- 178120
+ 178119
17
@@ -38012,12 +38028,12 @@
1
2
- 1349054
+ 1349052
2
3
- 508948
+ 508947
3
@@ -38032,7 +38048,7 @@
6
17
- 178120
+ 178119
17
@@ -38047,11 +38063,11 @@
ishandler
- 47521
+ 47475
block
- 47521
+ 47475
@@ -38084,7 +38100,7 @@
1
2
- 668063
+ 668062
2
@@ -38105,7 +38121,7 @@
1
2
- 668063
+ 668062
2
@@ -38170,7 +38186,7 @@
5480
- 170179
+ 170178
8
@@ -38231,7 +38247,7 @@
5480
- 170162
+ 170161
8
@@ -38248,7 +38264,7 @@
1
2
- 730668
+ 730667
2
@@ -38305,7 +38321,7 @@
1
2
- 668063
+ 668062
2
@@ -38326,7 +38342,7 @@
1
2
- 668063
+ 668062
2
@@ -38391,7 +38407,7 @@
5480
- 170179
+ 170178
8
@@ -38452,7 +38468,7 @@
5480
- 170179
+ 170178
8
@@ -38495,15 +38511,15 @@
blockscope
- 1838725
+ 1838723
block
- 1838725
+ 1838723
enclosing
- 1575685
+ 1575683
@@ -38517,7 +38533,7 @@
1
2
- 1838725
+ 1838723
@@ -38533,7 +38549,7 @@
1
2
- 1400369
+ 1400368
2
@@ -38543,7 +38559,7 @@
3
28
- 45477
+ 45476
@@ -38553,11 +38569,11 @@
jumpinfo
- 347365
+ 347364
id
- 347365
+ 347364
str
@@ -38579,7 +38595,7 @@
1
2
- 347365
+ 347364
@@ -38595,7 +38611,7 @@
1
2
- 347365
+ 347364
@@ -38698,7 +38714,7 @@
4
5
- 7359
+ 7358
5
@@ -38734,11 +38750,11 @@
preprocdirects
- 5704677
+ 5704669
id
- 5704677
+ 5704669
kind
@@ -38746,7 +38762,7 @@
location
- 5701313
+ 5701306
@@ -38760,7 +38776,7 @@
1
2
- 5704677
+ 5704669
@@ -38776,7 +38792,7 @@
1
2
- 5704677
+ 5704669
@@ -38924,7 +38940,7 @@
1
2
- 5701179
+ 5701171
26
@@ -38945,7 +38961,7 @@
1
2
- 5701313
+ 5701306
@@ -38955,15 +38971,15 @@
preprocpair
- 1103827
+ 1103825
begin
- 846303
+ 846302
elseelifend
- 1103827
+ 1103825
@@ -38977,7 +38993,7 @@
1
2
- 601561
+ 601560
2
@@ -39003,7 +39019,7 @@
1
2
- 1103827
+ 1103825
@@ -39013,11 +39029,11 @@
preproctrue
- 388573
+ 388572
branch
- 388573
+ 388572
@@ -39035,19 +39051,19 @@
preproctext
- 4599773
+ 4690318
id
- 4599773
+ 4690318
head
- 3333547
+ 3333139
body
- 1948247
+ 1948244
@@ -39061,7 +39077,7 @@
1
2
- 4599773
+ 4690318
@@ -39077,7 +39093,7 @@
1
2
- 4599773
+ 4690318
@@ -39093,12 +39109,12 @@
1
2
- 3143970
+ 3143697
2
740
- 189577
+ 189442
@@ -39114,7 +39130,7 @@
1
2
- 3253357
+ 3252949
2
@@ -39135,7 +39151,7 @@
1
2
- 1763648
+ 1763645
2
@@ -39144,7 +39160,7 @@
6
- 11630
+ 12303
38480
@@ -39161,16 +39177,16 @@
1
2
- 1767549
+ 1767547
2
7
- 146522
+ 146521
7
- 2980
+ 2977
34175
@@ -39181,15 +39197,15 @@
includes
- 408672
+ 408674
id
- 408672
+ 408674
included
- 75280
+ 75281
@@ -39203,7 +39219,7 @@
1
2
- 408672
+ 408674
@@ -39307,11 +39323,11 @@
link_parent
- 38279006
+ 38313696
element
- 4869162
+ 4873064
link_target
@@ -39329,17 +39345,17 @@
1
2
- 668749
+ 668840
2
9
- 34026
+ 33983
9
10
- 4166386
+ 4170240
@@ -39358,48 +39374,48 @@
42
- 97236
- 97237
+ 97325
+ 97326
42
- 97355
- 97356
+ 97444
+ 97445
42
- 97408
- 97409
+ 97497
+ 97498
42
- 97435
- 97436
+ 97524
+ 97525
42
- 97457
- 97458
+ 97546
+ 97547
42
- 97490
- 97491
+ 97578
+ 97579
42
- 99496
- 99497
+ 99585
+ 99586
42
- 102875
- 102876
+ 102965
+ 102966
42
- 104238
- 104239
+ 104327
+ 104328
42
diff --git a/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/old.dbscheme b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/old.dbscheme
new file mode 100644
index 00000000000..e594389175c
--- /dev/null
+++ b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/old.dbscheme
@@ -0,0 +1,2444 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * Optionally, record the build mode for each compilation.
+ */
+compilation_build_mode(
+ unique int id : @compilation ref,
+ int mode : int ref
+);
+
+/*
+case @compilation_build_mode.mode of
+ 0 = @build_mode_none
+| 1 = @build_mode_manual
+| 2 = @build_mode_auto
+;
+*/
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref
+);
+
+/*
+case @coroutine_placeholder_variable.kind of
+ 1 = @handle
+| 2 = @promise
+| 3 = @init_await_resume
+;
+*/
+
+coroutine_placeholder_variable(
+ unique int placeholder_variable: @variable ref,
+ int kind: int ref,
+ int function: @function ref
+)
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+deduction_guide_for_class(
+ int id: @function ref,
+ int class_template: @usertype ref
+)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_specialized(int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr ref
+);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @parameterized_element ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+// ... 14 = @using_alias deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+explicit_specifier_exprs(
+ unique int func_id: @function ref,
+ int constant: @expr ref
+)
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl
+ | @concept_template;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ | @c11_generic
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+| 385 = @istriviallyequalitycomparable
+| 386 = @isscopedenum
+| 387 = @istriviallyrelocatable
+| 388 = @datasizeof
+| 389 = @c11_generic
+| 390 = @requires_expr
+| 391 = @nested_requirement
+| 392 = @compound_requirement
+| 393 = @concept_id
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ | @istriviallyequalitycomparable
+ | @isscopedenum
+ | @istriviallyrelocatable
+ ;
+
+compound_requirement_is_noexcept(
+ int expr: @compound_requirement ref
+);
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@parameterized_element = @function | @stmt_block | @requires_expr;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @parameterized_element ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/semmlecode.cpp.dbscheme
new file mode 100644
index 00000000000..0f0a390468a
--- /dev/null
+++ b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/semmlecode.cpp.dbscheme
@@ -0,0 +1,2446 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * Optionally, record the build mode for each compilation.
+ */
+compilation_build_mode(
+ unique int id : @compilation ref,
+ int mode : int ref
+);
+
+/*
+case @compilation_build_mode.mode of
+ 0 = @build_mode_none
+| 1 = @build_mode_manual
+| 2 = @build_mode_auto
+;
+*/
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref
+);
+
+/*
+case @coroutine_placeholder_variable.kind of
+ 1 = @handle
+| 2 = @promise
+| 3 = @init_await_resume
+;
+*/
+
+coroutine_placeholder_variable(
+ unique int placeholder_variable: @variable ref,
+ int kind: int ref,
+ int function: @function ref
+)
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+deduction_guide_for_class(
+ int id: @function ref,
+ int class_template: @usertype ref
+)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_specialized(int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr ref
+);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @parameterized_element ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+// ... 14 = @using_alias deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+explicit_specifier_exprs(
+ unique int func_id: @function ref,
+ int constant: @expr ref
+)
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl
+ | @concept_template;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ | @c11_generic
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+| 385 = @istriviallyequalitycomparable
+| 386 = @isscopedenum
+| 387 = @istriviallyrelocatable
+| 388 = @datasizeof
+| 389 = @c11_generic
+| 390 = @requires_expr
+| 391 = @nested_requirement
+| 392 = @compound_requirement
+| 393 = @concept_id
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ | @istriviallyequalitycomparable
+ | @isscopedenum
+ | @istriviallyrelocatable
+ ;
+
+compound_requirement_is_noexcept(
+ int expr: @compound_requirement ref
+);
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+type_is_vla(unique int type_id: @derivedtype ref)
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@parameterized_element = @function | @stmt_block | @requires_expr;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @parameterized_element ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/upgrade.properties b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/upgrade.properties
new file mode 100644
index 00000000000..f6105ce157b
--- /dev/null
+++ b/cpp/ql/lib/upgrades/e594389175c098d7225683d0fd8cefcc47d84bc1/upgrade.properties
@@ -0,0 +1,2 @@
+description: Add a new predicate `isVla()` to the `ArrayType` class
+compatibility: backwards
\ No newline at end of file
diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs
index d277331b12e..7eb0d539812 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs
@@ -162,6 +162,10 @@ namespace Semmle.Autobuild.CSharp.Tests
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
+ public bool IsMonoInstalled { get; set; }
+
+ bool IBuildActions.IsMonoInstalled() => IsMonoInstalled;
+
public string PathCombine(params string[] parts)
{
return string.Join(IsWindows ? '\\' : '/', parts.Where(p => !string.IsNullOrWhiteSpace(p)));
@@ -424,8 +428,7 @@ namespace Semmle.Autobuild.CSharp.Tests
return new CSharpAutobuilder(actions, options);
}
- [Fact]
- public void TestDefaultCSharpAutoBuilder()
+ private void SetupActionForDotnet()
{
actions.RunProcess["cmd.exe /C dotnet --info"] = 0;
actions.RunProcess[@"cmd.exe /C dotnet clean C:\Project\test.csproj"] = 0;
@@ -438,20 +441,80 @@ namespace Semmle.Autobuild.CSharp.Tests
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\nbar.cs\ntest.csproj";
actions.EnumerateDirectories[@"C:\Project"] = "";
- var xml = new XmlDocument();
- xml.LoadXml(@"
-
- Exe
- netcoreapp2.1
-
+ }
-");
+ private void CreateAndVerifyDotnetScript(XmlDocument xml)
+ {
actions.LoadXml[@"C:\Project\test.csproj"] = xml;
var autobuilder = CreateAutoBuilder(true);
TestAutobuilderScript(autobuilder, 0, 4);
}
+ [Fact]
+ public void TestDefaultCSharpAutoBuilder1()
+ {
+ SetupActionForDotnet();
+ var xml = new XmlDocument();
+ xml.LoadXml(
+ """
+
+
+ Exe
+ netcoreapp2.1
+
+
+ """);
+ CreateAndVerifyDotnetScript(xml);
+ }
+
+ [Fact]
+ public void TestDefaultCSharpAutoBuilder2()
+ {
+ SetupActionForDotnet();
+ var xml = new XmlDocument();
+
+ xml.LoadXml(
+ """
+
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+ """
+ );
+ CreateAndVerifyDotnetScript(xml);
+ }
+
+ [Fact]
+ public void TestDefaultCSharpAutoBuilder3()
+ {
+ SetupActionForDotnet();
+ var xml = new XmlDocument();
+
+ xml.LoadXml(
+ """
+
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
+ """
+ );
+ CreateAndVerifyDotnetScript(xml);
+ }
+
[Fact]
public void TestLinuxCSharpAutoBuilder()
{
@@ -797,11 +860,32 @@ namespace Semmle.Autobuild.CSharp.Tests
}
[Fact]
- public void TestDirsProjLinux()
+ public void TestDirsProjLinux_WithMono()
{
+ actions.IsMonoInstalled = true;
+
actions.RunProcess[@"nuget restore C:\Project/dirs.proj -DisableParallelProcessing"] = 1;
actions.RunProcess[@"mono scratch/.nuget/nuget.exe restore C:\Project/dirs.proj -DisableParallelProcessing"] = 0;
actions.RunProcess[@"msbuild C:\Project/dirs.proj /t:rebuild"] = 0;
+
+ var autobuilder = TestDirsProjLinux();
+ TestAutobuilderScript(autobuilder, 0, 3);
+ }
+
+ [Fact]
+ public void TestDirsProjLinux_WithoutMono()
+ {
+ actions.IsMonoInstalled = false;
+
+ actions.RunProcess[@"dotnet msbuild /t:restore C:\Project/dirs.proj"] = 0;
+ actions.RunProcess[@"dotnet msbuild C:\Project/dirs.proj /t:rebuild"] = 0;
+
+ var autobuilder = TestDirsProjLinux();
+ TestAutobuilderScript(autobuilder, 0, 2);
+ }
+
+ private CSharpAutobuilder TestDirsProjLinux()
+ {
actions.FileExists["csharp.log"] = true;
actions.FileExists[@"C:\Project/a/test.csproj"] = true;
actions.FileExists[@"C:\Project/dirs.proj"] = true;
@@ -830,8 +914,7 @@ namespace Semmle.Autobuild.CSharp.Tests
");
actions.LoadXml[@"C:\Project/dirs.proj"] = dirsproj;
- var autobuilder = CreateAutoBuilder(false);
- TestAutobuilderScript(autobuilder, 0, 3);
+ return CreateAutoBuilder(false);
}
[Fact]
diff --git a/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs
index c74692bed75..afa4ea4b41c 100644
--- a/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs
@@ -150,6 +150,10 @@ namespace Semmle.Autobuild.Cpp.Tests
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
+ public bool IsMonoInstalled { get; set; }
+
+ bool IBuildActions.IsMonoInstalled() => IsMonoInstalled;
+
string IBuildActions.PathCombine(params string[] parts)
{
return string.Join(IsWindows ? '\\' : '/', parts.Where(p => !string.IsNullOrWhiteSpace(p)));
diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs
index 953f0884a44..748a22fb9d3 100644
--- a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs
@@ -10,15 +10,15 @@ namespace Semmle.Autobuild.Shared
///
/// Appends a call to msbuild.
///
- ///
- ///
///
- public static CommandBuilder MsBuildCommand(this CommandBuilder cmdBuilder, IAutobuilder builder)
+ public static CommandBuilder MsBuildCommand(this CommandBuilder cmdBuilder, IAutobuilder builder, bool preferDotnet)
{
// mono doesn't ship with `msbuild` on Arm-based Macs, but we can fall back to
// msbuild that ships with `dotnet` which can be invoked with `dotnet msbuild`
// perhaps we should do this on all platforms?
- return builder.Actions.IsRunningOnAppleSilicon()
+ // Similarly, there's no point in trying to rely on mono if it's not installed.
+ // In which case we can still fall back to `dotnet msbuild`.
+ return preferDotnet
? cmdBuilder.RunCommand("dotnet").Argument("msbuild")
: cmdBuilder.RunCommand("msbuild");
}
@@ -75,13 +75,16 @@ namespace Semmle.Autobuild.Shared
QuoteArgument(projectOrSolution.FullPath).
Argument("-DisableParallelProcessing").
Script;
+
+ var preferDotnet = builder.Actions.IsRunningOnAppleSilicon() || !builder.Actions.IsWindows() && !builder.Actions.IsMonoInstalled();
+
var nugetRestore = GetNugetRestoreScript();
var msbuildRestoreCommand = new CommandBuilder(builder.Actions).
- MsBuildCommand(builder).
+ MsBuildCommand(builder, preferDotnet).
Argument("/t:restore").
QuoteArgument(projectOrSolution.FullPath);
- if (builder.Actions.IsRunningOnAppleSilicon())
+ if (preferDotnet)
{
// On Apple Silicon, only try package restore with `dotnet msbuild /t:restore`
ret &= BuildScript.Try(msbuildRestoreCommand.Script);
@@ -119,7 +122,7 @@ namespace Semmle.Autobuild.Shared
command.RunCommand("set Platform=&& type NUL", quoteExe: false);
}
- command.MsBuildCommand(builder);
+ command.MsBuildCommand(builder, preferDotnet);
command.QuoteArgument(projectOrSolution.FullPath);
var target = "rebuild";
diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs
index c318ef09805..32c5cdeca28 100644
--- a/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
-using Semmle.Util.Logging;
namespace Semmle.Autobuild.Shared
{
@@ -26,6 +25,26 @@ namespace Semmle.Autobuild.Shared
private readonly Lazy>> includedProjectsLazy;
public override IEnumerable IncludedProjects => includedProjectsLazy.Value;
+ private static bool HasSdkAttribute(XmlElement xml) =>
+ xml.HasAttribute("Sdk");
+
+ private static bool AnyElement(XmlNodeList l, Func f) =>
+ l.OfType().Any(f);
+
+ ///
+ /// According to https://learn.microsoft.com/en-us/visualstudio/msbuild/how-to-use-project-sdk?view=vs-2022#reference-a-project-sdk
+ /// there are three ways to reference a project SDK:
+ /// 1. As an attribute on the <Project/>.
+ /// 2. As a top level element of <Project>.
+ /// 3. As an attribute on an <Import> element.
+ ///
+ /// Returns true, if the Sdk attribute is used, otherwise false.
+ ///
+ private static bool ReferencesSdk(XmlElement xml) =>
+ HasSdkAttribute(xml) || // Case 1
+ AnyElement(xml.ChildNodes, e => e.Name == "Sdk") || // Case 2
+ AnyElement(xml.GetElementsByTagName("Import"), HasSdkAttribute); // Case 3
+
public Project(Autobuilder builder, string path) : base(builder, path)
{
ToolsVersion = new Version();
@@ -49,7 +68,7 @@ namespace Semmle.Autobuild.Shared
if (root?.Name == "Project")
{
- if (root.HasAttribute("Sdk"))
+ if (ReferencesSdk(root))
{
DotNetProject = true;
return;
diff --git a/csharp/extractor/Semmle.Util/BuildActions.cs b/csharp/extractor/Semmle.Util/BuildActions.cs
index 507af96d13c..38210402945 100644
--- a/csharp/extractor/Semmle.Util/BuildActions.cs
+++ b/csharp/extractor/Semmle.Util/BuildActions.cs
@@ -125,6 +125,11 @@ namespace Semmle.Util
/// True if we are running on Apple Silicon.
bool IsRunningOnAppleSilicon();
+ ///
+ /// Checks if Mono is installed.
+ ///
+ bool IsMonoInstalled();
+
///
/// Combine path segments, Path.Combine().
///
@@ -261,6 +266,25 @@ namespace Semmle.Util
}
}
+ bool IBuildActions.IsMonoInstalled()
+ {
+ var thisBuildActions = (IBuildActions)this;
+
+ if (thisBuildActions.IsWindows())
+ {
+ return false;
+ }
+
+ try
+ {
+ return 0 == thisBuildActions.RunProcess("mono", "--version", workingDirectory: null, env: null);
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+
string IBuildActions.PathCombine(params string[] parts) => Path.Combine(parts);
void IBuildActions.WriteAllText(string filename, string contents) => File.WriteAllText(filename, contents);
diff --git a/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/test.py b/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/test.py
index fa941f346df..a2676d16d9c 100644
--- a/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/test.py
+++ b/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/test.py
@@ -1,8 +1,2 @@
-import pytest
-import runs_on
-
-
-# Skipping the test on macos-15, as we're running into trouble.
-@pytest.mark.only_if(not runs_on.macos_15)
def test(codeql, csharp):
codeql.database.create(_assert_failure=True)
diff --git a/csharp/ql/lib/change-notes/2025-04-11-auto-builder-sdk.md b/csharp/ql/lib/change-notes/2025-04-11-auto-builder-sdk.md
new file mode 100644
index 00000000000..1ab0153786f
--- /dev/null
+++ b/csharp/ql/lib/change-notes/2025-04-11-auto-builder-sdk.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Improved autobuilder logic for detecting whether a project references a SDK (and should be built using `dotnet`).
diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst
index 7d5a9bdb34a..bbefaf79cce 100644
--- a/docs/codeql/reusables/supported-versions-compilers.rst
+++ b/docs/codeql/reusables/supported-versions-compilers.rst
@@ -16,7 +16,7 @@
.NET Core up to 3.1
.NET 5, .NET 6, .NET 7, .NET 8, .NET 9","``.sln``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``"
- GitHub Actions [12]_,"Not applicable",Not applicable,"``.github/workflows/*.yml``, ``.github/workflows/*.yaml``, ``**/action.yml``, ``**/action.yaml``"
+ GitHub Actions,"Not applicable",Not applicable,"``.github/workflows/*.yml``, ``.github/workflows/*.yaml``, ``**/action.yml``, ``**/action.yaml``"
Go (aka Golang), "Go up to 1.24", "Go 1.11 or more recent", ``.go``
Java,"Java 7 to 24 [5]_","javac (OpenJDK and Oracle JDK),
@@ -41,4 +41,3 @@
.. [9] Requires glibc 2.17.
.. [10] Support for the analysis of Swift requires macOS.
.. [11] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default.
- .. [12] Support for GitHub Actions is in public preview.
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel
index a6d0823636e..d5999d21366 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "0.1.5",
deps = [
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel
index 31e9ae6079a..1f97bfd967f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel
@@ -80,14 +80,14 @@ alias(
)
alias(
- name = "clap-4.5.32",
- actual = "@vendor_ts__clap-4.5.32//:clap",
+ name = "clap-4.5.35",
+ actual = "@vendor_ts__clap-4.5.35//:clap",
tags = ["manual"],
)
alias(
name = "clap",
- actual = "@vendor_ts__clap-4.5.32//:clap",
+ actual = "@vendor_ts__clap-4.5.35//:clap",
tags = ["manual"],
)
@@ -260,200 +260,200 @@ alias(
)
alias(
- name = "ra_ap_base_db-0.0.270",
- actual = "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
+ name = "ra_ap_base_db-0.0.273",
+ actual = "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
tags = ["manual"],
)
alias(
name = "ra_ap_base_db",
- actual = "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
+ actual = "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
tags = ["manual"],
)
alias(
- name = "ra_ap_cfg-0.0.270",
- actual = "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
+ name = "ra_ap_cfg-0.0.273",
+ actual = "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
tags = ["manual"],
)
alias(
name = "ra_ap_cfg",
- actual = "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
+ actual = "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
tags = ["manual"],
)
alias(
- name = "ra_ap_hir-0.0.270",
- actual = "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir",
+ name = "ra_ap_hir-0.0.273",
+ actual = "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir",
tags = ["manual"],
)
alias(
name = "ra_ap_hir",
- actual = "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir",
+ actual = "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir",
tags = ["manual"],
)
alias(
- name = "ra_ap_hir_def-0.0.270",
- actual = "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def",
+ name = "ra_ap_hir_def-0.0.273",
+ actual = "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def",
tags = ["manual"],
)
alias(
name = "ra_ap_hir_def",
- actual = "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def",
+ actual = "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def",
tags = ["manual"],
)
alias(
- name = "ra_ap_hir_expand-0.0.270",
- actual = "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
+ name = "ra_ap_hir_expand-0.0.273",
+ actual = "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
tags = ["manual"],
)
alias(
name = "ra_ap_hir_expand",
- actual = "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
+ actual = "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
tags = ["manual"],
)
alias(
- name = "ra_ap_hir_ty-0.0.270",
- actual = "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty",
+ name = "ra_ap_hir_ty-0.0.273",
+ actual = "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty",
tags = ["manual"],
)
alias(
name = "ra_ap_hir_ty",
- actual = "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty",
+ actual = "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty",
tags = ["manual"],
)
alias(
- name = "ra_ap_ide_db-0.0.270",
- actual = "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db",
+ name = "ra_ap_ide_db-0.0.273",
+ actual = "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db",
tags = ["manual"],
)
alias(
name = "ra_ap_ide_db",
- actual = "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db",
+ actual = "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db",
tags = ["manual"],
)
alias(
- name = "ra_ap_intern-0.0.270",
- actual = "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
+ name = "ra_ap_intern-0.0.273",
+ actual = "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
tags = ["manual"],
)
alias(
name = "ra_ap_intern",
- actual = "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
+ actual = "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
tags = ["manual"],
)
alias(
- name = "ra_ap_load-cargo-0.0.270",
- actual = "@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo",
+ name = "ra_ap_load-cargo-0.0.273",
+ actual = "@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo",
tags = ["manual"],
)
alias(
name = "ra_ap_load-cargo",
- actual = "@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo",
+ actual = "@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo",
tags = ["manual"],
)
alias(
- name = "ra_ap_parser-0.0.270",
- actual = "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
+ name = "ra_ap_parser-0.0.273",
+ actual = "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
tags = ["manual"],
)
alias(
name = "ra_ap_parser",
- actual = "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
+ actual = "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
tags = ["manual"],
)
alias(
- name = "ra_ap_paths-0.0.270",
- actual = "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
+ name = "ra_ap_paths-0.0.273",
+ actual = "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
tags = ["manual"],
)
alias(
name = "ra_ap_paths",
- actual = "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
+ actual = "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
tags = ["manual"],
)
alias(
- name = "ra_ap_project_model-0.0.270",
- actual = "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model",
+ name = "ra_ap_project_model-0.0.273",
+ actual = "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model",
tags = ["manual"],
)
alias(
name = "ra_ap_project_model",
- actual = "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model",
+ actual = "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model",
tags = ["manual"],
)
alias(
- name = "ra_ap_span-0.0.270",
- actual = "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
+ name = "ra_ap_span-0.0.273",
+ actual = "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
tags = ["manual"],
)
alias(
name = "ra_ap_span",
- actual = "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
+ actual = "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
tags = ["manual"],
)
alias(
- name = "ra_ap_stdx-0.0.270",
- actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ name = "ra_ap_stdx-0.0.273",
+ actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
tags = ["manual"],
)
alias(
- name = "stdx-0.0.270",
- actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ name = "stdx-0.0.273",
+ actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
tags = ["manual"],
)
alias(
name = "stdx",
- actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
tags = ["manual"],
)
alias(
- name = "ra_ap_syntax-0.0.270",
- actual = "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
+ name = "ra_ap_syntax-0.0.273",
+ actual = "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
tags = ["manual"],
)
alias(
name = "ra_ap_syntax",
- actual = "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
+ actual = "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
tags = ["manual"],
)
alias(
- name = "ra_ap_vfs-0.0.270",
- actual = "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ name = "ra_ap_vfs-0.0.273",
+ actual = "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
tags = ["manual"],
)
alias(
name = "ra_ap_vfs",
- actual = "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ actual = "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
tags = ["manual"],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.8.0.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel
index eb58d610f97..e5f84a9323f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.8.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "2.8.0",
+ version = "2.9.0",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.5.bazel
similarity index 97%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.3.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.5.bazel
index 09e2ca4092d..062d394288f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.3.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.5.bazel
@@ -80,9 +80,9 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.5.3",
+ version = "1.5.5",
deps = [
- "@vendor_ts__borsh-1.5.3//:build_script_build",
+ "@vendor_ts__borsh-1.5.5//:build_script_build",
],
)
@@ -131,7 +131,7 @@ cargo_build_script(
"noclippy",
"norustfmt",
],
- version = "1.5.3",
+ version = "1.5.5",
visibility = ["//visibility:private"],
deps = [
"@vendor_ts__cfg_aliases-0.2.1//:cfg_aliases",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel
similarity index 96%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel
index 17cd583761c..5be95a9511f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel
@@ -32,7 +32,7 @@ rust_library(
"default",
],
crate_root = "src/lib.rs",
- edition = "2018",
+ edition = "2021",
rustc_flags = [
"--cap-lints=allow",
],
@@ -82,13 +82,13 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.18.1",
+ version = "0.19.2",
deps = [
"@vendor_ts__camino-1.1.9//:camino",
"@vendor_ts__cargo-platform-0.1.9//:cargo_platform",
- "@vendor_ts__semver-1.0.24//:semver",
+ "@vendor_ts__semver-1.0.26//:semver",
"@vendor_ts__serde-1.0.219//:serde",
"@vendor_ts__serde_json-1.0.140//:serde_json",
- "@vendor_ts__thiserror-1.0.69//:thiserror",
+ "@vendor_ts__thiserror-2.0.12//:thiserror",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel
index 9b77e1de102..a15909217db 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel
@@ -84,6 +84,6 @@ rust_library(
}),
version = "0.100.0",
deps = [
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel
index 6bea89c9407..1aa7560fbf2 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel
@@ -86,7 +86,7 @@ rust_library(
deps = [
"@vendor_ts__chalk-ir-0.100.0//:chalk_ir",
"@vendor_ts__ena-0.14.3//:ena",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
+ "@vendor_ts__indexmap-2.9.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.clap-4.5.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel
similarity index 97%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.32.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel
index efd3ae52118..c857bb360f3 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.32.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel
@@ -92,8 +92,8 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "4.5.32",
+ version = "4.5.35",
deps = [
- "@vendor_ts__clap_builder-4.5.32//:clap_builder",
+ "@vendor_ts__clap_builder-4.5.35//:clap_builder",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel
index d839347dd06..8d2e740ebd9 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel
@@ -87,7 +87,7 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "4.5.32",
+ version = "4.5.35",
deps = [
"@vendor_ts__anstream-0.6.18//:anstream",
"@vendor_ts__anstyle-1.0.10//:anstyle",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel
index 0675dd06116..ab0a896ca89 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "0.14.3",
deps = [
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.1.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel
index 54c391b74bb..2404a962610 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.1.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.1",
+ version = "1.0.2",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel
index afa987bf06c..bcb8fb8a739 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel
@@ -84,85 +84,85 @@ rust_library(
"@vendor_ts__cfg-if-1.0.0//:cfg_if",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel
index fa1103d4e4a..52e35cc09f6 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "4.1.0",
deps = [
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel
index bf828ac701b..0589aa9e457 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel
@@ -84,88 +84,88 @@ rust_library(
deps = [
"@vendor_ts__cfg-if-1.0.0//:cfg_if",
"@vendor_ts__generator-0.8.4//:build_script_build",
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-0.58.0//:windows", # cfg(windows)
],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-0.58.0//:windows", # cfg(windows)
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-0.58.0//:windows", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel
index ae0fc92ddc7..e4cc7ad397a 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel
@@ -89,79 +89,79 @@ rust_library(
"@vendor_ts__getrandom-0.3.1//:build_script_build",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7")))
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix"))
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7")))
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm")))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm")))
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten"))
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos"))
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7")))
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm")))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm")))
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr"))))
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel
index c7341c6d1f1..3a2a29d0ae4 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel
@@ -87,7 +87,7 @@ rust_library(
deps = [
"@vendor_ts__aho-corasick-1.1.3//:aho_corasick",
"@vendor_ts__bstr-1.11.3//:bstr",
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
"@vendor_ts__regex-automata-0.4.9//:regex_automata",
"@vendor_ts__regex-syntax-0.8.5//:regex_syntax",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel
index d7d08e46be6..ab42e90e017 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel
@@ -90,7 +90,7 @@ rust_library(
version = "0.15.2",
deps = [
"@vendor_ts__allocator-api2-0.2.21//:allocator_api2",
- "@vendor_ts__equivalent-1.0.1//:equivalent",
+ "@vendor_ts__equivalent-1.0.2//:equivalent",
"@vendor_ts__foldhash-0.1.5//:foldhash",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.9.0.bazel
similarity index 98%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.9.0.bazel
index 53eacc89ea6..f3d360378d5 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.9.0.bazel
@@ -84,9 +84,9 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "2.7.0",
+ version = "2.9.0",
deps = [
- "@vendor_ts__equivalent-1.0.1//:equivalent",
+ "@vendor_ts__equivalent-1.0.2//:equivalent",
"@vendor_ts__hashbrown-0.15.2//:hashbrown",
"@vendor_ts__serde-1.0.219//:serde",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel
index 8abc71e5811..aff8348d7f0 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel
@@ -81,8 +81,8 @@ rust_library(
}),
version = "0.11.0",
deps = [
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
"@vendor_ts__inotify-sys-0.1.5//:inotify_sys",
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel
index 3e23ee4dea6..5a3e4beb27b 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "0.1.5",
deps = [
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.14.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel
index 596b777f685..0ed2975cf78 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.14.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.14",
+ version = "1.0.15",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel
index 25390d540e0..9c5a46755fa 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel
@@ -82,6 +82,6 @@ rust_library(
version = "1.0.8",
deps = [
"@vendor_ts__kqueue-sys-1.0.4//:kqueue_sys",
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel
index e226e4b77c7..ea19f54cb02 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel
@@ -82,6 +82,6 @@ rust_library(
version = "1.0.4",
deps = [
"@vendor_ts__bitflags-1.3.2//:bitflags",
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.169.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel
similarity index 97%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.169.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel
index d3cef09f0cd..aedf0e4cfe2 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.169.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel
@@ -84,9 +84,9 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.2.169",
+ version = "0.2.171",
deps = [
- "@vendor_ts__libc-0.2.169//:build_script_build",
+ "@vendor_ts__libc-0.2.171//:build_script_build",
],
)
@@ -139,7 +139,7 @@ cargo_build_script(
"noclippy",
"norustfmt",
],
- version = "0.2.169",
+ version = "0.2.171",
visibility = ["//visibility:private"],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel
index 4bbbe82982c..99f49837400 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel
@@ -81,8 +81,8 @@ rust_library(
}),
version = "0.1.3",
deps = [
- "@vendor_ts__bitflags-2.8.0//:bitflags",
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
+ "@vendor_ts__libc-0.2.171//:libc",
"@vendor_ts__redox_syscall-0.5.8//:syscall",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel
index c17f4cad96b..7ee9ca3cce2 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel
@@ -85,6 +85,6 @@ rust_library(
}),
version = "0.3.9",
deps = [
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.25.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel
index a2e0e15b13e..b36cd98285f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.25.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel
@@ -82,5 +82,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.4.25",
+ version = "0.4.27",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lz4_flex-0.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lz4_flex-0.11.3.bazel
deleted file mode 100644
index c2b50d980e1..00000000000
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lz4_flex-0.11.3.bazel
+++ /dev/null
@@ -1,83 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
- name = "lz4_flex",
- 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_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-bazel",
- "crate-name=lz4_flex",
- "manual",
- "noclippy",
- "norustfmt",
- ],
- target_compatible_with = select({
- "@rules_rust//rust/platform:aarch64-apple-darwin": [],
- "@rules_rust//rust/platform:aarch64-apple-ios": [],
- "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
- "@rules_rust//rust/platform:aarch64-linux-android": [],
- "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
- "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
- "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
- "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
- "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
- "@rules_rust//rust/platform:aarch64-unknown-uefi": [],
- "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
- "@rules_rust//rust/platform:armv7-linux-androideabi": [],
- "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
- "@rules_rust//rust/platform:i686-apple-darwin": [],
- "@rules_rust//rust/platform:i686-linux-android": [],
- "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
- "@rules_rust//rust/platform:i686-unknown-freebsd": [],
- "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
- "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
- "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
- "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
- "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
- "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
- "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
- "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
- "@rules_rust//rust/platform:wasm32-wasip1": [],
- "@rules_rust//rust/platform:x86_64-apple-darwin": [],
- "@rules_rust//rust/platform:x86_64-apple-ios": [],
- "@rules_rust//rust/platform:x86_64-linux-android": [],
- "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
- "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
- "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
- "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
- "@rules_rust//rust/platform:x86_64-unknown-none": [],
- "@rules_rust//rust/platform:x86_64-unknown-uefi": [],
- "//conditions:default": ["@platforms//:incompatible"],
- }),
- version = "0.11.3",
-)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel
index 617822e3a9c..1c48d01d22f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel
@@ -87,92 +87,92 @@ rust_library(
}),
version = "1.0.3",
deps = [
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:wasm32-wasip1": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(target_os = "wasi")
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(target_os = "wasi")
"@vendor_ts__wasi-0.11.0-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi")
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel
index 43a411a44ef..1b78caaf894 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel
@@ -87,13 +87,13 @@ rust_library(
version = "8.0.0",
deps = [
"@vendor_ts__filetime-0.2.25//:filetime",
- "@vendor_ts__libc-0.2.169//:libc",
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__libc-0.2.171//:libc",
+ "@vendor_ts__log-0.4.27//:log",
"@vendor_ts__notify-types-2.0.0//:notify_types",
"@vendor_ts__walkdir-2.5.0//:walkdir",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__bitflags-2.8.0//:bitflags", # cfg(target_os = "macos")
+ "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos")
"@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
@@ -132,7 +132,7 @@ rust_library(
"@vendor_ts__mio-1.0.3//:mio", # cfg(any(target_os = "linux", target_os = "android"))
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__bitflags-2.8.0//:bitflags", # cfg(target_os = "macos")
+ "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos")
"@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin
],
"@rules_rust//rust/platform:i686-linux-android": [
@@ -159,7 +159,7 @@ rust_library(
"@vendor_ts__mio-1.0.3//:mio", # cfg(any(target_os = "linux", target_os = "android"))
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__bitflags-2.8.0//:bitflags", # cfg(target_os = "macos")
+ "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos")
"@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # x86_64-apple-darwin
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel
index ccbaed88173..057e8dd6c63 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel
@@ -82,103 +82,103 @@ rust_library(
version = "1.16.0",
deps = select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:aarch64-unknown-uefi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:thumbv7em-none-eabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:thumbv8m.main-none-eabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:wasm32-unknown-unknown": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:wasm32-wasip1": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-none": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"@rules_rust//rust/platform:x86_64-unknown-uefi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(not(windows))
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows))
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.4.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel
index 2514e59de67..7fda44d7d5f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.4.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "11.1.4",
+ version = "11.1.5",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel
index d53c706ee3c..ea6704cb134 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel
@@ -87,85 +87,85 @@ rust_library(
"@vendor_ts__smallvec-1.14.0//:smallvec",
] + select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows)
],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-linux-androideabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows)
],
"@rules_rust//rust/platform:i686-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-darwin": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-apple-ios": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-linux-android": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
- "@vendor_ts__libc-0.2.169//:libc", # cfg(unix)
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
],
"//conditions:default": [],
}),
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel
index 5784824a298..4f084775990 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel
@@ -81,7 +81,7 @@ rust_library(
}),
version = "0.4.7",
deps = [
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
"@vendor_ts__perf-event-open-sys-1.0.1//:perf_event_open_sys",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel
index 92b15bc5d88..1e4bd90b8ae 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "1.0.1",
deps = [
- "@vendor_ts__libc-0.2.169//:libc",
+ "@vendor_ts__libc-0.2.171//:libc",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel
index df987bd453e..ac85fb246bd 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
@@ -88,6 +88,6 @@ rust_library(
version = "0.6.5",
deps = [
"@vendor_ts__fixedbitset-0.4.2//:fixedbitset",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel
index c78fa364e8e..c7bacd2430c 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel
@@ -87,7 +87,7 @@ rust_library(
version = "1.0.94",
deps = [
"@vendor_ts__proc-macro2-1.0.94//:build_script_build",
- "@vendor_ts__unicode-ident-1.0.16//:unicode_ident",
+ "@vendor_ts__unicode-ident-1.0.17//:unicode_ident",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel
index f1bf54464e6..cc04b2be07d 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel
@@ -85,7 +85,7 @@ rust_library(
}),
version = "0.100.0",
deps = [
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
"@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes",
"@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index",
"@vendor_ts__tracing-0.1.41//:tracing",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel
index dcdff444d8f..3a7ef306f97 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel
@@ -86,7 +86,7 @@ rust_library(
deps = [
"@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
- "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat",
+ "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat",
"@vendor_ts__smallvec-1.14.0//:smallvec",
"@vendor_ts__tracing-0.1.41//:tracing",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel
similarity index 80%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel
index 6e8ab6e20b3..fa7cec0dbb2 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel
@@ -17,13 +17,12 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs",
},
compile_data = glob(
include = ["**"],
@@ -40,7 +39,7 @@ rust_library(
crate_root = "src/lib.rs",
edition = "2024",
proc_macro_deps = [
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro",
],
rustc_flags = [
"--cap-lints=allow",
@@ -91,20 +90,18 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__dashmap-5.5.3//:dashmap",
"@vendor_ts__la-arena-0.3.1//:la_arena",
- "@vendor_ts__lz4_flex-0.11.3//:lz4_flex",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__salsa-0.19.0//:salsa",
- "@vendor_ts__semver-1.0.24//:semver",
+ "@vendor_ts__semver-1.0.26//: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_cfg-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel
similarity index 93%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel
index c38cc3cdd88..a80bffe20f9 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel
@@ -17,8 +17,8 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -86,10 +86,10 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__tracing-0.1.41//:tracing",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel
index 598826ee263..15381260d65 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel
similarity index 74%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel
index c85c4bbf946..6bf6732bb06 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel
@@ -17,16 +17,16 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg",
- "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def": "hir_def",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand",
- "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty": "hir_ty",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg",
+ "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def": "hir_def",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand",
+ "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty": "hir_ty",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -91,22 +91,22 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
"@vendor_ts__either-1.15.0//:either",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itertools-0.12.1//:itertools",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
- "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
- "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
+ "@vendor_ts__itertools-0.14.0//:itertools",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
+ "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
+ "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__smallvec-1.14.0//:smallvec",
"@vendor_ts__tracing-0.1.41//:tracing",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel
similarity index 73%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel
index f0e8fd28561..2e483df01ff 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel
@@ -17,16 +17,16 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe": "mbe",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe": "mbe",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -43,7 +43,7 @@ rust_library(
crate_root = "src/lib.rs",
edition = "2024",
proc_macro_deps = [
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro",
],
rustc_flags = [
"--cap-lints=allow",
@@ -94,36 +94,34 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
"@vendor_ts__cov-mark-2.0.0//:cov_mark",
- "@vendor_ts__dashmap-5.5.3//:dashmap",
"@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__hashbrown-0.14.5//:hashbrown",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__indexmap-2.9.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.100.0//:ra_ap_rustc_abi",
- "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes",
"@vendor_ts__ra-ap-rustc_parse_format-0.100.0//:ra_ap_rustc_parse_format",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
- "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat",
+ "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat",
"@vendor_ts__salsa-0.19.0//:salsa",
"@vendor_ts__smallvec-1.14.0//:smallvec",
"@vendor_ts__text-size-1.1.1//:text_size",
+ "@vendor_ts__thin-vec-0.2.14//:thin_vec",
"@vendor_ts__tracing-0.1.41//:tracing",
"@vendor_ts__triomphe-0.1.14//:triomphe",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel
similarity index 73%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel
index 716d660159f..3bd7c5b7cd5 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel
@@ -17,17 +17,17 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe": "mbe",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge": "syntax_bridge",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe": "mbe",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge": "syntax_bridge",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -44,7 +44,7 @@ rust_library(
crate_root = "src/lib.rs",
edition = "2024",
proc_macro_deps = [
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro",
],
rustc_flags = [
"--cap-lints=allow",
@@ -95,23 +95,21 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__cov-mark-2.0.0//:cov_mark",
"@vendor_ts__either-1.15.0//:either",
- "@vendor_ts__hashbrown-0.14.5//:hashbrown",
- "@vendor_ts__itertools-0.12.1//:itertools",
- "@vendor_ts__la-arena-0.3.1//:la_arena",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__itertools-0.14.0//:itertools",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__salsa-0.19.0//:salsa",
"@vendor_ts__smallvec-1.14.0//:smallvec",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel
similarity index 77%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel
index 6e1e0740c96..a2488ef3be6 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel
@@ -17,14 +17,14 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def": "hir_def",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def": "hir_def",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
},
compile_data = glob(
include = ["**"],
@@ -42,7 +42,7 @@ rust_library(
edition = "2024",
proc_macro_deps = [
"@vendor_ts__chalk-derive-0.100.0//:chalk_derive",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro",
],
rustc_flags = [
"--cap-lints=allow",
@@ -93,34 +93,32 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
"@vendor_ts__chalk-ir-0.100.0//:chalk_ir",
"@vendor_ts__chalk-recursive-0.100.0//:chalk_recursive",
"@vendor_ts__chalk-solve-0.100.0//:chalk_solve",
"@vendor_ts__cov-mark-2.0.0//:cov_mark",
- "@vendor_ts__dashmap-5.5.3//:dashmap",
"@vendor_ts__either-1.15.0//:either",
"@vendor_ts__ena-0.14.3//:ena",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
+ "@vendor_ts__itertools-0.14.0//:itertools",
"@vendor_ts__la-arena-0.3.1//:la_arena",
- "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher",
- "@vendor_ts__oorandom-11.1.4//:oorandom",
+ "@vendor_ts__oorandom-11.1.5//:oorandom",
"@vendor_ts__ra-ap-rustc_abi-0.100.0//:ra_ap_rustc_abi",
"@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index",
"@vendor_ts__ra-ap-rustc_pattern_analysis-0.100.0//:ra_ap_rustc_pattern_analysis",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
- "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat",
+ "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat",
"@vendor_ts__salsa-0.19.0//:salsa",
"@vendor_ts__scoped-tls-1.0.1//:scoped_tls",
"@vendor_ts__smallvec-1.14.0//:smallvec",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel
similarity index 76%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel
index 0c437699408..e3741062022 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel
@@ -17,15 +17,15 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir": "hir",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser",
- "@vendor_ts__ra_ap_profile-0.0.270//:ra_ap_profile": "profile",
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir": "hir",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser",
+ "@vendor_ts__ra_ap_profile-0.0.273//:ra_ap_profile": "profile",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs",
},
compile_data = glob(
include = ["**"],
@@ -42,7 +42,7 @@ rust_library(
crate_root = "src/lib.rs",
edition = "2024",
proc_macro_deps = [
- "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro",
+ "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro",
],
rustc_flags = [
"--cap-lints=allow",
@@ -93,28 +93,27 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
"@vendor_ts__cov-mark-2.0.0//:cov_mark",
"@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel",
- "@vendor_ts__dashmap-5.5.3//:dashmap",
"@vendor_ts__either-1.15.0//:either",
"@vendor_ts__fst-0.4.7//:fst",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
+ "@vendor_ts__itertools-0.14.0//:itertools",
"@vendor_ts__line-index-0.1.2//:line_index",
"@vendor_ts__memchr-2.7.4//:memchr",
"@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
- "@vendor_ts__ra_ap_profile-0.0.270//:ra_ap_profile",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
+ "@vendor_ts__ra_ap_profile-0.0.273//:ra_ap_profile",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
"@vendor_ts__rayon-1.10.0//:rayon",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__salsa-0.19.0//:salsa",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel
index 39f87b8bcdc..72e7580e416 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel
@@ -79,7 +79,7 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__dashmap-5.5.3//:dashmap",
"@vendor_ts__hashbrown-0.14.5//:hashbrown",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel
similarity index 75%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel
index 30a635ef821..c9b5273ee2b 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel
@@ -17,16 +17,15 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand",
- "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db": "ide_db",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths",
- "@vendor_ts__ra_ap_proc_macro_api-0.0.270//:ra_ap_proc_macro_api": "proc_macro_api",
- "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model": "project_model",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs",
- "@vendor_ts__ra_ap_vfs-notify-0.0.270//:ra_ap_vfs_notify": "vfs_notify",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand",
+ "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db": "ide_db",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_proc_macro_api-0.0.273//:ra_ap_proc_macro_api": "proc_macro_api",
+ "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model": "project_model",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs",
+ "@vendor_ts__ra_ap_vfs-notify-0.0.273//:ra_ap_vfs_notify": "vfs_notify",
},
compile_data = glob(
include = ["**"],
@@ -91,21 +90,20 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__anyhow-1.0.97//:anyhow",
"@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel",
- "@vendor_ts__itertools-0.12.1//:itertools",
- "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand",
- "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
- "@vendor_ts__ra_ap_proc_macro_api-0.0.270//:ra_ap_proc_macro_api",
- "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
- "@vendor_ts__ra_ap_vfs-notify-0.0.270//:ra_ap_vfs_notify",
+ "@vendor_ts__itertools-0.14.0//:itertools",
+ "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand",
+ "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_proc_macro_api-0.0.273//:ra_ap_proc_macro_api",
+ "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
+ "@vendor_ts__ra_ap_vfs-notify-0.0.273//:ra_ap_vfs_notify",
"@vendor_ts__tracing-0.1.41//:tracing",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel
similarity index 80%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel
index be98a1794d8..635c79e43f3 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel
@@ -17,13 +17,12 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge": "syntax_bridge",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge": "syntax_bridge",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -88,20 +87,18 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
"@vendor_ts__cov-mark-2.0.0//:cov_mark",
"@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__smallvec-1.14.0//:smallvec",
- "@vendor_ts__tracing-0.1.41//:tracing",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel
similarity index 96%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel
index abd94f21b0c..0c1ca867e3d 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel
@@ -17,7 +17,7 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_edition-0.0.270//:ra_ap_edition": "edition",
+ "@vendor_ts__ra_ap_edition-0.0.273//:ra_ap_edition": "edition",
},
compile_data = glob(
include = ["**"],
@@ -86,11 +86,11 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__drop_bomb-0.1.5//:drop_bomb",
"@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer",
- "@vendor_ts__ra_ap_edition-0.0.270//:ra_ap_edition",
+ "@vendor_ts__ra_ap_edition-0.0.273//:ra_ap_edition",
"@vendor_ts__tracing-0.1.41//:tracing",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel
index 582fc319674..fb0f90b4248 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel
@@ -82,7 +82,7 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__camino-1.1.9//:camino",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel
similarity index 85%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel
index e8379df9f54..bdb33ce1a79 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel
@@ -17,11 +17,11 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -89,14 +89,14 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__serde-1.0.219//:serde",
"@vendor_ts__serde_json-1.0.140//:serde_json",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel
similarity index 86%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel
index 2a4bffbc5c8..6e1af1c0010 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel
@@ -79,45 +79,53 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__cfg-if-1.0.0//:cfg_if",
- "@vendor_ts__libc-0.2.169//:libc",
] + select({
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu"))
"@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos")))
],
"//conditions:default": [],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel
similarity index 79%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel
index bac3ea62b1c..cb1f3a56a14 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel
@@ -17,13 +17,13 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_toolchain-0.0.270//:ra_ap_toolchain": "toolchain",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_toolchain-0.0.273//:ra_ap_toolchain": "toolchain",
},
compile_data = glob(
include = ["**"],
@@ -91,21 +91,21 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__anyhow-1.0.97//:anyhow",
- "@vendor_ts__cargo_metadata-0.18.1//:cargo_metadata",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__cargo_metadata-0.19.2//:cargo_metadata",
+ "@vendor_ts__itertools-0.14.0//:itertools",
"@vendor_ts__la-arena-0.3.1//:la_arena",
- "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db",
- "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_toolchain-0.0.270//:ra_ap_toolchain",
+ "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db",
+ "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_toolchain-0.0.273//:ra_ap_toolchain",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
- "@vendor_ts__semver-1.0.24//:semver",
+ "@vendor_ts__semver-1.0.26//:semver",
"@vendor_ts__serde-1.0.219//:serde",
"@vendor_ts__serde_json-1.0.140//:serde_json",
"@vendor_ts__tracing-0.1.41//:tracing",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel
similarity index 97%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel
index 66b54f0975e..394f5e421ac 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel
@@ -79,12 +79,10 @@ rust_proc_macro(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
- "@vendor_ts__heck-0.5.0//:heck",
"@vendor_ts__proc-macro2-1.0.94//:proc_macro2",
"@vendor_ts__quote-1.0.40//:quote",
- "@vendor_ts__salsa-0.19.0//:salsa",
"@vendor_ts__syn-2.0.100//:syn",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel
similarity index 89%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel
index fcace1b1b05..15f74141c03 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel
@@ -17,9 +17,9 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs",
},
compile_data = glob(
include = ["**"],
@@ -33,6 +33,10 @@ rust_library(
"WORKSPACE.bazel",
],
),
+ crate_features = [
+ "default",
+ "salsa",
+ ],
crate_root = "src/lib.rs",
edition = "2024",
rustc_flags = [
@@ -84,13 +88,13 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__hashbrown-0.14.5//:hashbrown",
"@vendor_ts__la-arena-0.3.1//:la_arena",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__salsa-0.19.0//:salsa",
"@vendor_ts__text-size-1.1.1//:text_size",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel
similarity index 57%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel
index 9a96045450a..baf4d1942a4 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel
@@ -79,26 +79,97 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__itertools-0.14.0//:itertools",
"@vendor_ts__jod-thread-0.1.2//:jod_thread",
- "@vendor_ts__libc-0.2.169//:libc",
"@vendor_ts__tracing-0.1.41//:tracing",
] + select({
+ "@rules_rust//rust/platform:aarch64-apple-darwin": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-apple-ios": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-linux-android": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
"@vendor_ts__miow-0.6.0//:miow", # cfg(windows)
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
+ "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:armv7-linux-androideabi": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:i686-apple-darwin": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:i686-linux-android": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [
"@vendor_ts__miow-0.6.0//:miow", # cfg(windows)
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
+ "@rules_rust//rust/platform:i686-unknown-freebsd": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-apple-darwin": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-apple-ios": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-linux-android": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"@vendor_ts__miow-0.6.0//:miow", # cfg(windows)
"@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows)
],
+ "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
+ "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+ "@vendor_ts__libc-0.2.171//:libc", # cfg(unix)
+ ],
"//conditions:default": [],
}),
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel
similarity index 90%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel
index adfba58214c..8555bc6b119 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel
@@ -17,8 +17,8 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
},
compile_data = glob(
include = ["**"],
@@ -83,15 +83,13 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
- "@vendor_ts__cov-mark-2.0.0//:cov_mark",
"@vendor_ts__either-1.15.0//:either",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itertools-0.12.1//:itertools",
+ "@vendor_ts__itertools-0.14.0//:itertools",
"@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
"@vendor_ts__rowan-0.15.15//:rowan",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__smol_str-0.3.2//:smol_str",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel
similarity index 82%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel
index 5402358378f..959cd8c4734 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel
@@ -17,12 +17,12 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt",
},
compile_data = glob(
include = ["**"],
@@ -87,15 +87,14 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser",
- "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax",
- "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser",
+ "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax",
+ "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
- "@vendor_ts__tracing-0.1.41//:tracing",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel
index a9f5509b306..211a787f67f 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel
@@ -79,7 +79,7 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__camino-1.1.9//:camino",
"@vendor_ts__home-0.5.11//:home",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel
similarity index 93%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel
index 946e9862a99..1059e91496c 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel
@@ -17,8 +17,8 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
},
compile_data = glob(
include = ["**"],
@@ -83,12 +83,12 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__arrayvec-0.7.6//:arrayvec",
"@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer",
- "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
"@vendor_ts__text-size-1.1.1//:text_size",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel
similarity index 92%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel
index 3990da07910..7213c9199cd 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel
@@ -17,8 +17,8 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
},
compile_data = glob(
include = ["**"],
@@ -83,14 +83,14 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel",
"@vendor_ts__fst-0.4.7//:fst",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
"@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__tracing-0.1.41//:tracing",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel
similarity index 91%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel
index 494979d3952..33a5d195f84 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel
@@ -17,9 +17,9 @@ rust_library(
allow_empty = True,
),
aliases = {
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs",
},
compile_data = glob(
include = ["**"],
@@ -84,13 +84,13 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.0.270",
+ version = "0.0.273",
deps = [
"@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel",
"@vendor_ts__notify-8.0.0//:notify",
- "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths",
- "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx",
- "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs",
+ "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths",
+ "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx",
+ "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs",
"@vendor_ts__rayon-1.10.0//:rayon",
"@vendor_ts__rustc-hash-2.1.1//:rustc_hash",
"@vendor_ts__tracing-0.1.41//:tracing",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel
index adc812c3df5..db9267bd12e 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel
@@ -81,6 +81,6 @@ rust_library(
}),
version = "0.5.8",
deps = [
- "@vendor_ts__bitflags-2.8.0//:bitflags",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.1+llvm-462a31f5a5ab.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel
similarity index 96%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.1+llvm-462a31f5a5ab.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel
index 00e80306ea4..feeb8d3cda4 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.1+llvm-462a31f5a5ab.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel
@@ -80,10 +80,10 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "0.2.1+llvm-462a31f5a5ab",
+ version = "0.2.2+llvm-462a31f5a5ab",
deps = [
- "@vendor_ts__bitflags-1.3.2//:bitflags",
- "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:build_script_build",
+ "@vendor_ts__bitflags-2.9.0//:bitflags",
+ "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:build_script_build",
"@vendor_ts__smallvec-1.14.0//:smallvec",
],
)
@@ -133,7 +133,7 @@ cargo_build_script(
"noclippy",
"norustfmt",
],
- version = "0.2.1+llvm-462a31f5a5ab",
+ version = "0.2.2+llvm-462a31f5a5ab",
visibility = ["//visibility:private"],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel
index f732cb64f0f..6018cc9f491 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel
@@ -95,7 +95,7 @@ rust_library(
"@vendor_ts__dashmap-6.1.0//:dashmap",
"@vendor_ts__hashbrown-0.15.2//:hashbrown",
"@vendor_ts__hashlink-0.10.0//:hashlink",
- "@vendor_ts__indexmap-2.7.0//:indexmap",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
"@vendor_ts__parking_lot-0.12.3//:parking_lot",
"@vendor_ts__portable-atomic-1.11.0//:portable_atomic",
"@vendor_ts__rayon-1.10.0//:rayon",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel
similarity index 97%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel
index 004fe29bbd7..807edeb3644 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel
@@ -85,9 +85,9 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.24",
+ version = "1.0.26",
deps = [
- "@vendor_ts__semver-1.0.24//:build_script_build",
+ "@vendor_ts__semver-1.0.26//:build_script_build",
"@vendor_ts__serde-1.0.219//:serde",
],
)
@@ -142,7 +142,7 @@ cargo_build_script(
"noclippy",
"norustfmt",
],
- version = "1.0.24",
+ version = "1.0.26",
visibility = ["//visibility:private"],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel
index 3f7d00505fb..82dde7080ad 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel
@@ -87,7 +87,7 @@ rust_library(
}),
version = "1.0.140",
deps = [
- "@vendor_ts__itoa-1.0.14//:itoa",
+ "@vendor_ts__itoa-1.0.15//:itoa",
"@vendor_ts__memchr-2.7.4//:memchr",
"@vendor_ts__ryu-1.0.19//:ryu",
"@vendor_ts__serde-1.0.219//:serde",
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 78a3a8caae5..9ec28ca4440 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
@@ -81,8 +81,8 @@ rust_library(
}),
version = "0.9.34+deprecated",
deps = [
- "@vendor_ts__indexmap-2.7.0//:indexmap",
- "@vendor_ts__itoa-1.0.14//:itoa",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
+ "@vendor_ts__itoa-1.0.15//:itoa",
"@vendor_ts__ryu-1.0.19//:ryu",
"@vendor_ts__serde-1.0.219//:serde",
"@vendor_ts__unsafe-libyaml-0.2.11//:unsafe_libyaml",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel
index 36eda052e06..052bbecfe4d 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel
@@ -95,6 +95,6 @@ rust_library(
deps = [
"@vendor_ts__proc-macro2-1.0.94//:proc_macro2",
"@vendor_ts__quote-1.0.40//:quote",
- "@vendor_ts__unicode-ident-1.0.16//:unicode_ident",
+ "@vendor_ts__unicode-ident-1.0.17//:unicode_ident",
],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel
new file mode 100644
index 00000000000..aff81c59413
--- /dev/null
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel
@@ -0,0 +1,87 @@
+###############################################################################
+# @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//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+ name = "thin_vec",
+ 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_flags = [
+ "--cap-lints=allow",
+ ],
+ tags = [
+ "cargo-bazel",
+ "crate-name=thin-vec",
+ "manual",
+ "noclippy",
+ "norustfmt",
+ ],
+ target_compatible_with = select({
+ "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+ "@rules_rust//rust/platform:aarch64-apple-ios": [],
+ "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+ "@rules_rust//rust/platform:aarch64-linux-android": [],
+ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+ "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+ "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+ "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+ "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+ "@rules_rust//rust/platform:aarch64-unknown-uefi": [],
+ "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+ "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+ "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+ "@rules_rust//rust/platform:i686-apple-darwin": [],
+ "@rules_rust//rust/platform:i686-linux-android": [],
+ "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+ "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+ "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+ "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+ "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+ "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+ "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+ "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+ "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+ "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+ "@rules_rust//rust/platform:wasm32-wasip1": [],
+ "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+ "@rules_rust//rust/platform:x86_64-apple-ios": [],
+ "@rules_rust//rust/platform:x86_64-linux-android": [],
+ "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+ "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+ "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+ "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+ "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+ "@rules_rust//rust/platform:x86_64-unknown-none": [],
+ "@rules_rust//rust/platform:x86_64-unknown-uefi": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ version = "0.2.14",
+)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel
similarity index 94%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel
index a79c49f5eea..2b685a2cd3a 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel
@@ -29,10 +29,14 @@ rust_library(
"WORKSPACE.bazel",
],
),
+ crate_features = [
+ "default",
+ "std",
+ ],
crate_root = "src/lib.rs",
edition = "2021",
proc_macro_deps = [
- "@vendor_ts__thiserror-impl-1.0.69//:thiserror_impl",
+ "@vendor_ts__thiserror-impl-2.0.12//:thiserror_impl",
],
rustc_flags = [
"--cap-lints=allow",
@@ -83,9 +87,9 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.69",
+ version = "2.0.12",
deps = [
- "@vendor_ts__thiserror-1.0.69//:build_script_build",
+ "@vendor_ts__thiserror-2.0.12//:build_script_build",
],
)
@@ -108,6 +112,10 @@ cargo_build_script(
"WORKSPACE.bazel",
],
),
+ crate_features = [
+ "default",
+ "std",
+ ],
crate_name = "build_script_build",
crate_root = "build.rs",
data = glob(
@@ -134,7 +142,7 @@ cargo_build_script(
"noclippy",
"norustfmt",
],
- version = "1.0.69",
+ version = "2.0.12",
visibility = ["//visibility:private"],
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel
index c5c8a699bee..4bae5674a88 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel
@@ -79,7 +79,7 @@ rust_proc_macro(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.69",
+ version = "2.0.12",
deps = [
"@vendor_ts__proc-macro2-1.0.94//:proc_macro2",
"@vendor_ts__quote-1.0.40//:quote",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel
index c539ad29ce8..ee4b912ba31 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel
@@ -86,7 +86,7 @@ rust_library(
}),
version = "0.22.24",
deps = [
- "@vendor_ts__indexmap-2.7.0//:indexmap",
+ "@vendor_ts__indexmap-2.9.0//:indexmap",
"@vendor_ts__serde-1.0.219//:serde",
"@vendor_ts__serde_spanned-0.6.8//:serde_spanned",
"@vendor_ts__toml_datetime-0.6.8//:toml_datetime",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel
index da7b8a8bfc0..b4f1a8d3ab5 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel
@@ -85,7 +85,7 @@ rust_library(
}),
version = "0.2.0",
deps = [
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
"@vendor_ts__once_cell-1.20.3//:once_cell",
"@vendor_ts__tracing-core-0.1.33//:tracing_core",
],
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.17.bazel
similarity index 99%
rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.16.bazel
rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.17.bazel
index f1e1eea9fb4..6d4b21156f9 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.16.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.17.bazel
@@ -79,5 +79,5 @@ rust_library(
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
- version = "1.0.16",
+ version = "1.0.17",
)
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel
index 35041989b3d..2b5e035e409 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel
@@ -86,7 +86,7 @@ rust_library(
version = "0.2.99",
deps = [
"@vendor_ts__bumpalo-3.16.0//:bumpalo",
- "@vendor_ts__log-0.4.25//:log",
+ "@vendor_ts__log-0.4.27//:log",
"@vendor_ts__proc-macro2-1.0.94//:proc_macro2",
"@vendor_ts__quote-1.0.40//:quote",
"@vendor_ts__syn-2.0.100//:syn",
diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl
index b011a2c9800..ee2044468e7 100644
--- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl
+++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl
@@ -296,7 +296,7 @@ def aliases(
_NORMAL_DEPENDENCIES = {
"ruby/extractor": {
_COMMON_CONDITION: {
- "clap": Label("@vendor_ts__clap-4.5.32//:clap"),
+ "clap": Label("@vendor_ts__clap-4.5.35//:clap"),
"encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"),
"lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"),
"rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"),
@@ -317,7 +317,7 @@ _NORMAL_DEPENDENCIES = {
"proc-macro2": Label("@vendor_ts__proc-macro2-1.0.94//:proc_macro2"),
"quote": Label("@vendor_ts__quote-1.0.40//:quote"),
"serde": Label("@vendor_ts__serde-1.0.219//:serde"),
- "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx"),
+ "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx"),
"ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"),
},
},
@@ -329,27 +329,27 @@ _NORMAL_DEPENDENCIES = {
"argfile": Label("@vendor_ts__argfile-0.2.1//:argfile"),
"chalk-ir": Label("@vendor_ts__chalk-ir-0.100.0//:chalk_ir"),
"chrono": Label("@vendor_ts__chrono-0.4.40//:chrono"),
- "clap": Label("@vendor_ts__clap-4.5.32//:clap"),
+ "clap": Label("@vendor_ts__clap-4.5.35//:clap"),
"dunce": Label("@vendor_ts__dunce-1.0.5//:dunce"),
"figment": Label("@vendor_ts__figment-0.10.19//:figment"),
"glob": Label("@vendor_ts__glob-0.3.2//:glob"),
"itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"),
"num-traits": Label("@vendor_ts__num-traits-0.2.19//:num_traits"),
- "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db"),
- "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg"),
- "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir"),
- "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def"),
- "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand"),
- "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty"),
- "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db"),
- "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern"),
- "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo"),
- "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser"),
- "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths"),
- "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model"),
- "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span"),
- "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax"),
- "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs"),
+ "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db"),
+ "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg"),
+ "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir"),
+ "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def"),
+ "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand"),
+ "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty"),
+ "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db"),
+ "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern"),
+ "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo"),
+ "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser"),
+ "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths"),
+ "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model"),
+ "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span"),
+ "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax"),
+ "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs"),
"serde": Label("@vendor_ts__serde-1.0.219//:serde"),
"serde_json": Label("@vendor_ts__serde_json-1.0.140//:serde_json"),
"serde_with": Label("@vendor_ts__serde_with-3.12.0//:serde_with"),
@@ -392,7 +392,7 @@ _NORMAL_ALIASES = {
},
"rust/ast-generator": {
_COMMON_CONDITION: {
- Label("@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx"): "stdx",
+ Label("@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx"): "stdx",
},
},
"rust/autobuild": {
@@ -596,6 +596,7 @@ _CONDITIONS = {
"cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
"cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
"cfg(all(target_os = \"linux\", not(target_env = \"ohos\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+ "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
"cfg(all(windows, not(target_vendor = \"win7\")))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
"cfg(any())": [],
"cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", all(target_os = \"horizon\", target_arch = \"arm\")))": ["@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"],
@@ -829,22 +830,22 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__bitflags-2.8.0",
- sha256 = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36",
+ name = "vendor_ts__bitflags-2.9.0",
+ sha256 = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/bitflags/2.8.0/download"],
- strip_prefix = "bitflags-2.8.0",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.8.0.bazel"),
+ urls = ["https://static.crates.io/crates/bitflags/2.9.0/download"],
+ strip_prefix = "bitflags-2.9.0",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.9.0.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__borsh-1.5.3",
- sha256 = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03",
+ name = "vendor_ts__borsh-1.5.5",
+ sha256 = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/borsh/1.5.3/download"],
- strip_prefix = "borsh-1.5.3",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.5.3.bazel"),
+ urls = ["https://static.crates.io/crates/borsh/1.5.5/download"],
+ strip_prefix = "borsh-1.5.5",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.5.5.bazel"),
)
maybe(
@@ -919,12 +920,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__cargo_metadata-0.18.1",
- sha256 = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037",
+ name = "vendor_ts__cargo_metadata-0.19.2",
+ sha256 = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/cargo_metadata/0.18.1/download"],
- strip_prefix = "cargo_metadata-0.18.1",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.18.1.bazel"),
+ urls = ["https://static.crates.io/crates/cargo_metadata/0.19.2/download"],
+ strip_prefix = "cargo_metadata-0.19.2",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.19.2.bazel"),
)
maybe(
@@ -1009,22 +1010,22 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__clap-4.5.32",
- sha256 = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83",
+ name = "vendor_ts__clap-4.5.35",
+ sha256 = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/clap/4.5.32/download"],
- strip_prefix = "clap-4.5.32",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.32.bazel"),
+ urls = ["https://static.crates.io/crates/clap/4.5.35/download"],
+ strip_prefix = "clap-4.5.35",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.35.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__clap_builder-4.5.32",
- sha256 = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8",
+ name = "vendor_ts__clap_builder-4.5.35",
+ sha256 = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/clap_builder/4.5.32/download"],
- strip_prefix = "clap_builder-4.5.32",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.32.bazel"),
+ urls = ["https://static.crates.io/crates/clap_builder/4.5.35/download"],
+ strip_prefix = "clap_builder-4.5.35",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.35.bazel"),
)
maybe(
@@ -1319,12 +1320,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__equivalent-1.0.1",
- sha256 = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5",
+ name = "vendor_ts__equivalent-1.0.2",
+ sha256 = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/equivalent/1.0.1/download"],
- strip_prefix = "equivalent-1.0.1",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.1.bazel"),
+ urls = ["https://static.crates.io/crates/equivalent/1.0.2/download"],
+ strip_prefix = "equivalent-1.0.2",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.2.bazel"),
)
maybe(
@@ -1579,12 +1580,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__indexmap-2.7.0",
- sha256 = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f",
+ name = "vendor_ts__indexmap-2.9.0",
+ sha256 = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/indexmap/2.7.0/download"],
- strip_prefix = "indexmap-2.7.0",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.7.0.bazel"),
+ urls = ["https://static.crates.io/crates/indexmap/2.9.0/download"],
+ strip_prefix = "indexmap-2.9.0",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.9.0.bazel"),
)
maybe(
@@ -1649,12 +1650,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__itoa-1.0.14",
- sha256 = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674",
+ name = "vendor_ts__itoa-1.0.15",
+ sha256 = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/itoa/1.0.14/download"],
- strip_prefix = "itoa-1.0.14",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.14.bazel"),
+ urls = ["https://static.crates.io/crates/itoa/1.0.15/download"],
+ strip_prefix = "itoa-1.0.15",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.15.bazel"),
)
maybe(
@@ -1719,12 +1720,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__libc-0.2.169",
- sha256 = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a",
+ name = "vendor_ts__libc-0.2.171",
+ sha256 = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/libc/0.2.169/download"],
- strip_prefix = "libc-0.2.169",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.169.bazel"),
+ urls = ["https://static.crates.io/crates/libc/0.2.171/download"],
+ strip_prefix = "libc-0.2.171",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.171.bazel"),
)
maybe(
@@ -1769,12 +1770,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__log-0.4.25",
- sha256 = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f",
+ name = "vendor_ts__log-0.4.27",
+ sha256 = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/log/0.4.25/download"],
- strip_prefix = "log-0.4.25",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.25.bazel"),
+ urls = ["https://static.crates.io/crates/log/0.4.27/download"],
+ strip_prefix = "log-0.4.27",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.27.bazel"),
)
maybe(
@@ -1787,16 +1788,6 @@ def crate_repositories():
build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.loom-0.7.2.bazel"),
)
- maybe(
- http_archive,
- name = "vendor_ts__lz4_flex-0.11.3",
- sha256 = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5",
- type = "tar.gz",
- urls = ["https://static.crates.io/crates/lz4_flex/0.11.3/download"],
- strip_prefix = "lz4_flex-0.11.3",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.lz4_flex-0.11.3.bazel"),
- )
-
maybe(
http_archive,
name = "vendor_ts__matchers-0.1.0",
@@ -1949,12 +1940,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__oorandom-11.1.4",
- sha256 = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9",
+ name = "vendor_ts__oorandom-11.1.5",
+ sha256 = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/oorandom/11.1.4/download"],
- strip_prefix = "oorandom-11.1.4",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.4.bazel"),
+ urls = ["https://static.crates.io/crates/oorandom/11.1.5/download"],
+ strip_prefix = "oorandom-11.1.5",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.5.bazel"),
)
maybe(
@@ -2189,252 +2180,252 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__ra_ap_base_db-0.0.270",
- sha256 = "4baa9734d254af14fd603528ad594650dea601b1764492bd39988da38598ae67",
+ name = "vendor_ts__ra_ap_base_db-0.0.273",
+ sha256 = "8fd761118bbafe29e2b187e694c6b8e800f2c7822bbc1d9d2db4ac21fb8b0365",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.270/download"],
- strip_prefix = "ra_ap_base_db-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.273/download"],
+ strip_prefix = "ra_ap_base_db-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_cfg-0.0.270",
- sha256 = "0ef2ba45636c5e585040c0c4bee640737a6001b08309f1a25ca78cf04abfbf90",
+ name = "vendor_ts__ra_ap_cfg-0.0.273",
+ sha256 = "5ce74ce1af24afd86d3529dbbf5a849d026948b2d8ba51d199b6ea6db6e345b6",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.270/download"],
- strip_prefix = "ra_ap_cfg-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.273/download"],
+ strip_prefix = "ra_ap_cfg-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_edition-0.0.270",
- sha256 = "8955c1484d5e7274f755187788ba0d51eb149f870c69cdf0d87c3b7edea20ea0",
+ name = "vendor_ts__ra_ap_edition-0.0.273",
+ sha256 = "f423b9fb19e3920e4c7039120d09d9c79070a26efe8ff9f787c7234b07f518c5",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.270/download"],
- strip_prefix = "ra_ap_edition-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.273/download"],
+ strip_prefix = "ra_ap_edition-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_hir-0.0.270",
- sha256 = "a51d7955beff2212701b149bea36d4cf2dc0f5cd129652c9bcf0cb5c0b021078",
+ name = "vendor_ts__ra_ap_hir-0.0.273",
+ sha256 = "dd4aa8a568b80d288b90c4fa5dc8a3cc405914d261bfd33a3761c1ba41be358d",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.270/download"],
- strip_prefix = "ra_ap_hir-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.273/download"],
+ strip_prefix = "ra_ap_hir-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_hir_def-0.0.270",
- sha256 = "e5c97e617e4c585d24b3d4f668861452aedddfbe0262f4c53235dcea77e62f9b",
+ name = "vendor_ts__ra_ap_hir_def-0.0.273",
+ sha256 = "acb18d9378a828a23ccf87b89199db005adb67ba2a05a37d7a3fcad4d1036e66",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.270/download"],
- strip_prefix = "ra_ap_hir_def-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.273/download"],
+ strip_prefix = "ra_ap_hir_def-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_hir_expand-0.0.270",
- sha256 = "be57c0d7e3f2180dd8ea584b11447f34060eadc06f0f6d559e2a790f6e91b6c5",
+ name = "vendor_ts__ra_ap_hir_expand-0.0.273",
+ sha256 = "094fa79d8f661f52cf3b7fb8b3d91c4be2ad9e71a3967d3dacd25429fa44b37d",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.270/download"],
- strip_prefix = "ra_ap_hir_expand-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.273/download"],
+ strip_prefix = "ra_ap_hir_expand-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_hir_ty-0.0.270",
- sha256 = "f260f35748f3035b46a8afcdebda7cb75d95c24750105fad86101d09a9d387c8",
+ name = "vendor_ts__ra_ap_hir_ty-0.0.273",
+ sha256 = "093482d200d5db421db5692e7819bbb14fb717cc8cb0f91f93cce9fde85b3df2",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.270/download"],
- strip_prefix = "ra_ap_hir_ty-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.273/download"],
+ strip_prefix = "ra_ap_hir_ty-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_ide_db-0.0.270",
- sha256 = "0426263be26e27cb55a3b9ef88b120511b66fe7d9b418a2473d6d5f3ac2fe0a6",
+ name = "vendor_ts__ra_ap_ide_db-0.0.273",
+ sha256 = "b655b92dfa9444db8129321b9217d9e4a83a58ee707aa1004a93052acfb43d57",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.270/download"],
- strip_prefix = "ra_ap_ide_db-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.273/download"],
+ strip_prefix = "ra_ap_ide_db-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_intern-0.0.270",
- sha256 = "f6ea8c9615b3b0688cf557e7310dbd9432f43860c8ea766d54f4416cbecf3571",
+ name = "vendor_ts__ra_ap_intern-0.0.273",
+ sha256 = "b4e528496b4d4c351806bb073d3d7f6526535741b9e8801776603c924bbec624",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.270/download"],
- strip_prefix = "ra_ap_intern-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.273/download"],
+ strip_prefix = "ra_ap_intern-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_load-cargo-0.0.270",
- sha256 = "570907e16725c13a678bfd8050ce8839af2831da042a0878b75ee8c41b0f7b0c",
+ name = "vendor_ts__ra_ap_load-cargo-0.0.273",
+ sha256 = "1a97a5070b2f4b99f56683d91b2687aa0c530d8969cc5252ec2ae5644e428ffe",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.270/download"],
- strip_prefix = "ra_ap_load-cargo-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.273/download"],
+ strip_prefix = "ra_ap_load-cargo-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_mbe-0.0.270",
- sha256 = "e893fe03b04b30c9b5a339ac2bf39ce32ac9c05a8b50121b7d89ce658346e164",
+ name = "vendor_ts__ra_ap_mbe-0.0.273",
+ sha256 = "b187ee5ee3fa726eeea5142242a0397e2200d77084026986a68324b9599f9046",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.270/download"],
- strip_prefix = "ra_ap_mbe-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.273/download"],
+ strip_prefix = "ra_ap_mbe-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_parser-0.0.270",
- sha256 = "6fd9a264120968b14a66b6ba756cd7f99435385b5dbc2f0a611cf3a12221c385",
+ name = "vendor_ts__ra_ap_parser-0.0.273",
+ sha256 = "2306e6c051e60483f3b317fac9dec6c883b7792eeb8db24ec6f39dbfa5430159",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.270/download"],
- strip_prefix = "ra_ap_parser-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.273/download"],
+ strip_prefix = "ra_ap_parser-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_paths-0.0.270",
- sha256 = "f47817351651e36b56ff3afc483b41600053c9cb7e67d945467c0abe93416032",
+ name = "vendor_ts__ra_ap_paths-0.0.273",
+ sha256 = "dcedd00499621bdd0f1fe01955c04e4b388197aa826744003afaf6cc2944bc80",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.270/download"],
- strip_prefix = "ra_ap_paths-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.273/download"],
+ strip_prefix = "ra_ap_paths-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_proc_macro_api-0.0.270",
- sha256 = "d96da3b8b9f6b813a98f5357eef303905450741f47ba90adaab8a5371b748416",
+ name = "vendor_ts__ra_ap_proc_macro_api-0.0.273",
+ sha256 = "7a2e49b550015cd4ad152bd78d92d73594497f2e44f61273f9fed3534ad4bbbe",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.270/download"],
- strip_prefix = "ra_ap_proc_macro_api-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.273/download"],
+ strip_prefix = "ra_ap_proc_macro_api-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_profile-0.0.270",
- sha256 = "13637377287c84f88a628e40229d271ef0081c0d683956bd99a6c8278a4f8b14",
+ name = "vendor_ts__ra_ap_profile-0.0.273",
+ sha256 = "87cdbd27ebe02ec21fdae3df303f194bda036a019ecef80d47e0082646f06c54",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.270/download"],
- strip_prefix = "ra_ap_profile-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.273/download"],
+ strip_prefix = "ra_ap_profile-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_project_model-0.0.270",
- sha256 = "053c5207a638fc7a752c7a454bc952b28b0d02f0bf9f6d7ec785ec809579d8fa",
+ name = "vendor_ts__ra_ap_project_model-0.0.273",
+ sha256 = "5eaa3406c891a7840d20ce615f8decca32cbc9d3654b82dcbcc3a31257ce90b9",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.270/download"],
- strip_prefix = "ra_ap_project_model-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.273/download"],
+ strip_prefix = "ra_ap_project_model-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_query-group-macro-0.0.270",
- sha256 = "0f1a38f07b442e47a234cbe2e8fd1b8a41ff0cc5123cb1cf994c5ce20edb5bd6",
+ name = "vendor_ts__ra_ap_query-group-macro-0.0.273",
+ sha256 = "1fbc1748e4876a9b0ccfacfc7e2fe254f30e92ef58d98925282b3803e8b004ed",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.270/download"],
- strip_prefix = "ra_ap_query-group-macro-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.273/download"],
+ strip_prefix = "ra_ap_query-group-macro-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_span-0.0.270",
- sha256 = "8818680c6f7da3b32cb2bb0992940b24264b1aa90203aa94812e09ab34d362d1",
+ name = "vendor_ts__ra_ap_span-0.0.273",
+ sha256 = "ed1d036e738bf32a057d90698df85bcb83ed6263b5fe9fba132c99e8ec3aecaf",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_span/0.0.270/download"],
- strip_prefix = "ra_ap_span-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_span/0.0.273/download"],
+ strip_prefix = "ra_ap_span-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_stdx-0.0.270",
- sha256 = "f1c10bee1b03fc48083862c13cf06bd3ed17760463ecce2734103a2f511e5ed4",
+ name = "vendor_ts__ra_ap_stdx-0.0.273",
+ sha256 = "6e3775954ab24408f71e97079a97558078a166a4082052e83256ae4c22dae18d",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.270/download"],
- strip_prefix = "ra_ap_stdx-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.273/download"],
+ strip_prefix = "ra_ap_stdx-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_syntax-0.0.270",
- sha256 = "92bc32f3946fc5fcbdc79e61b7e26a8c2a3a56f3ef6ab27c7d298a9e21a462f2",
+ name = "vendor_ts__ra_ap_syntax-0.0.273",
+ sha256 = "b49b081f209a764700f688db91820a66c2ecfe5f138895d831361cf84f716691",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.270/download"],
- strip_prefix = "ra_ap_syntax-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.273/download"],
+ strip_prefix = "ra_ap_syntax-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_syntax-bridge-0.0.270",
- sha256 = "a42052c44c98c122c37aac476260c8f19d8fec495edc9c05835307c9ae86194d",
+ name = "vendor_ts__ra_ap_syntax-bridge-0.0.273",
+ sha256 = "f2740bbe603d527f2cf0aaf51629de7d072694fbbaaeda8264f7591be1493d1b",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.270/download"],
- strip_prefix = "ra_ap_syntax-bridge-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.273/download"],
+ strip_prefix = "ra_ap_syntax-bridge-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_toolchain-0.0.270",
- sha256 = "75996e70b3a0c68cd5157ba01f018964c7c6a5d7b209047d449b393139d0b57f",
+ name = "vendor_ts__ra_ap_toolchain-0.0.273",
+ sha256 = "efbff9f26f307ef958586357d1653d000861dcd3acbaf33a009651e024720c7e",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.270/download"],
- strip_prefix = "ra_ap_toolchain-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.273/download"],
+ strip_prefix = "ra_ap_toolchain-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_tt-0.0.270",
- sha256 = "0e4ee31e93bfabe83e6720b7469db88d7ad7ec5c59a1f011efec4aa1327ffc5c",
+ name = "vendor_ts__ra_ap_tt-0.0.273",
+ sha256 = "0b1ce3ac14765e414fa6031fda7dc35d3492c74de225aac689ba8b8bf037e1f8",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.270/download"],
- strip_prefix = "ra_ap_tt-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.273/download"],
+ strip_prefix = "ra_ap_tt-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_vfs-0.0.270",
- sha256 = "f6aac1e277ac70bb073f40f8a3fc44e4b1bb9e4d4b1d0e0bd2f8269543560f80",
+ name = "vendor_ts__ra_ap_vfs-0.0.273",
+ sha256 = "29427a7c27ce8ddfefb52d77c952a4588c74d0a7ab064dc627129088a90423ca",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.270/download"],
- strip_prefix = "ra_ap_vfs-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.273/download"],
+ strip_prefix = "ra_ap_vfs-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.273.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__ra_ap_vfs-notify-0.0.270",
- sha256 = "cd95285146049621ee8f7a512c982a008bf036321fcc9b01a95c1ad7e6aeae57",
+ name = "vendor_ts__ra_ap_vfs-notify-0.0.273",
+ sha256 = "d5a0e3095b8216ecc131f38b4b0025cac324a646469a95d2670354aee7278078",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.270/download"],
- strip_prefix = "ra_ap_vfs-notify-0.0.270",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.270.bazel"),
+ urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.273/download"],
+ strip_prefix = "ra_ap_vfs-notify-0.0.273",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.273.bazel"),
)
maybe(
@@ -2589,11 +2580,11 @@ def crate_repositories():
maybe(
new_git_repository,
- name = "vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab",
- commit = "096d585100636bc2e9f09d7eefec38c5b334d47b",
+ name = "vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab",
+ commit = "32968f16ef1b082243f9bf43a3fbd65c381b3e27",
init_submodules = True,
remote = "https://github.com/redsun82/rustc_apfloat.git",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.1+llvm-462a31f5a5ab.bazel"),
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel"),
)
maybe(
@@ -2678,12 +2669,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__semver-1.0.24",
- sha256 = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba",
+ name = "vendor_ts__semver-1.0.26",
+ sha256 = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/semver/1.0.24/download"],
- strip_prefix = "semver-1.0.24",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.semver-1.0.24.bazel"),
+ 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"),
)
maybe(
@@ -2858,22 +2849,32 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__thiserror-1.0.69",
- sha256 = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52",
+ name = "vendor_ts__thin-vec-0.2.14",
+ sha256 = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/thiserror/1.0.69/download"],
- strip_prefix = "thiserror-1.0.69",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-1.0.69.bazel"),
+ urls = ["https://static.crates.io/crates/thin-vec/0.2.14/download"],
+ strip_prefix = "thin-vec-0.2.14",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thin-vec-0.2.14.bazel"),
)
maybe(
http_archive,
- name = "vendor_ts__thiserror-impl-1.0.69",
- sha256 = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1",
+ name = "vendor_ts__thiserror-2.0.12",
+ sha256 = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/thiserror-impl/1.0.69/download"],
- strip_prefix = "thiserror-impl-1.0.69",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-1.0.69.bazel"),
+ urls = ["https://static.crates.io/crates/thiserror/2.0.12/download"],
+ strip_prefix = "thiserror-2.0.12",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.12.bazel"),
+ )
+
+ maybe(
+ http_archive,
+ name = "vendor_ts__thiserror-impl-2.0.12",
+ sha256 = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d",
+ type = "tar.gz",
+ urls = ["https://static.crates.io/crates/thiserror-impl/2.0.12/download"],
+ strip_prefix = "thiserror-impl-2.0.12",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.12.bazel"),
)
maybe(
@@ -3108,12 +3109,12 @@ def crate_repositories():
maybe(
http_archive,
- name = "vendor_ts__unicode-ident-1.0.16",
- sha256 = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034",
+ name = "vendor_ts__unicode-ident-1.0.17",
+ sha256 = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe",
type = "tar.gz",
- urls = ["https://static.crates.io/crates/unicode-ident/1.0.16/download"],
- strip_prefix = "unicode-ident-1.0.16",
- build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.16.bazel"),
+ urls = ["https://static.crates.io/crates/unicode-ident/1.0.17/download"],
+ strip_prefix = "unicode-ident-1.0.17",
+ build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.17.bazel"),
)
maybe(
@@ -3651,7 +3652,7 @@ def crate_repositories():
struct(repo = "vendor_ts__argfile-0.2.1", is_dev_dep = False),
struct(repo = "vendor_ts__chalk-ir-0.100.0", is_dev_dep = False),
struct(repo = "vendor_ts__chrono-0.4.40", is_dev_dep = False),
- struct(repo = "vendor_ts__clap-4.5.32", is_dev_dep = False),
+ struct(repo = "vendor_ts__clap-4.5.35", is_dev_dep = False),
struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False),
struct(repo = "vendor_ts__either-1.15.0", is_dev_dep = False),
struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False),
@@ -3666,22 +3667,22 @@ def crate_repositories():
struct(repo = "vendor_ts__num_cpus-1.16.0", is_dev_dep = False),
struct(repo = "vendor_ts__proc-macro2-1.0.94", is_dev_dep = False),
struct(repo = "vendor_ts__quote-1.0.40", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_base_db-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_cfg-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_hir-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_hir_def-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_ide_db-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_intern-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_parser-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_paths-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_project_model-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_span-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_stdx-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_syntax-0.0.270", is_dev_dep = False),
- struct(repo = "vendor_ts__ra_ap_vfs-0.0.270", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_base_db-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_cfg-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_hir-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_hir_def-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_ide_db-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_intern-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_parser-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_paths-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_project_model-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_span-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_stdx-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_syntax-0.0.273", is_dev_dep = False),
+ struct(repo = "vendor_ts__ra_ap_vfs-0.0.273", is_dev_dep = False),
struct(repo = "vendor_ts__rayon-1.10.0", is_dev_dep = False),
struct(repo = "vendor_ts__regex-1.11.1", is_dev_dep = False),
struct(repo = "vendor_ts__serde-1.0.219", is_dev_dep = False),
diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml
index 23b2ab8cb15..233a380b2f7 100644
--- a/rust/ast-generator/Cargo.toml
+++ b/rust/ast-generator/Cargo.toml
@@ -10,7 +10,7 @@ ungrammar = "1.16.1"
proc-macro2 = "1.0.94"
quote = "1.0.40"
either = "1.15.0"
-stdx = {package = "ra_ap_stdx", version = "0.0.270"}
+stdx = {package = "ra_ap_stdx", version = "0.0.273"}
itertools = "0.14.0"
mustache = "0.9.0"
serde = { version = "1.0.219", features = ["derive"] }
diff --git a/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/old.dbscheme b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/old.dbscheme
new file mode 100644
index 00000000000..e8707b675dc
--- /dev/null
+++ b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/old.dbscheme
@@ -0,0 +1,3606 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @macro_stmts
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id]
+crate_modules(
+ int id: @crate ref,
+ int module: @module ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+macro_stmts(
+ unique int id: @macro_stmts
+);
+
+#keyset[id]
+macro_stmts_exprs(
+ int id: @macro_stmts ref,
+ int expr: @expr ref
+);
+
+#keyset[id, index]
+macro_stmts_statements(
+ int id: @macro_stmts ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_is_unsafe(
+ int id: @struct_field ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_expandeds(
+ int id: @macro_call ref,
+ int expanded: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/rust.dbscheme b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/rust.dbscheme
new file mode 100644
index 00000000000..256e80c2dce
--- /dev/null
+++ b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/rust.dbscheme
@@ -0,0 +1,3601 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @macro_stmts
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id]
+crate_modules(
+ int id: @crate ref,
+ int module: @module ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+macro_stmts(
+ unique int id: @macro_stmts
+);
+
+#keyset[id]
+macro_stmts_exprs(
+ int id: @macro_stmts ref,
+ int expr: @expr ref
+);
+
+#keyset[id, index]
+macro_stmts_statements(
+ int id: @macro_stmts ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_expandeds(
+ int id: @macro_call ref,
+ int expanded: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/upgrade.properties b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/upgrade.properties
new file mode 100644
index 00000000000..589e2d2682a
--- /dev/null
+++ b/rust/downgrades/e8707b675dc574aca9863eabcc09ac76f15bb9c2/upgrade.properties
@@ -0,0 +1,4 @@
+description: Remove `struct_field_is_unsafe` table
+compatibility: backwards
+
+struct_field_is_unsafe.rel: delete
diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml
index d4f6a177074..bdbe7c969ee 100644
--- a/rust/extractor/Cargo.toml
+++ b/rust/extractor/Cargo.toml
@@ -7,24 +7,24 @@ license = "MIT"
# When updating these dependencies, run `rust/update_cargo_deps.sh`
[dependencies]
anyhow = "1.0.97"
-clap = { version = "4.5.32", features = ["derive"] }
+clap = { version = "4.5.35", features = ["derive"] }
figment = { version = "0.10.19", features = ["env", "yaml"] }
num-traits = "0.2.19"
-ra_ap_base_db = "0.0.270"
-ra_ap_hir = "0.0.270"
-ra_ap_hir_def = "0.0.270"
-ra_ap_ide_db = "0.0.270"
-ra_ap_hir_ty = "0.0.270"
-ra_ap_hir_expand = "0.0.270"
-ra_ap_load-cargo = "0.0.270"
-ra_ap_paths = "0.0.270"
-ra_ap_project_model = "0.0.270"
-ra_ap_syntax = "0.0.270"
-ra_ap_vfs = "0.0.270"
-ra_ap_parser = "0.0.270"
-ra_ap_span = "0.0.270"
-ra_ap_cfg = "0.0.270"
-ra_ap_intern = "0.0.270"
+ra_ap_base_db = "0.0.273"
+ra_ap_hir = "0.0.273"
+ra_ap_hir_def = "0.0.273"
+ra_ap_ide_db = "0.0.273"
+ra_ap_hir_ty = "0.0.273"
+ra_ap_hir_expand = "0.0.273"
+ra_ap_load-cargo = "0.0.273"
+ra_ap_paths = "0.0.273"
+ra_ap_project_model = "0.0.273"
+ra_ap_syntax = "0.0.273"
+ra_ap_vfs = "0.0.273"
+ra_ap_parser = "0.0.273"
+ra_ap_span = "0.0.273"
+ra_ap_cfg = "0.0.273"
+ra_ap_intern = "0.0.273"
serde = "1.0.219"
serde_with = "3.12.0"
triomphe = "0.1.14"
diff --git a/rust/extractor/src/crate_graph.rs b/rust/extractor/src/crate_graph.rs
index bc0389e8ce5..88802e6239b 100644
--- a/rust/extractor/src/crate_graph.rs
+++ b/rust/extractor/src/crate_graph.rs
@@ -18,15 +18,18 @@ use ra_ap_hir_def::{
};
use ra_ap_hir_def::{HasModule, visibility::VisibilityExplicitness};
use ra_ap_hir_def::{ModuleId, resolver::HasResolver};
-use ra_ap_hir_ty::TraitRefExt;
use ra_ap_hir_ty::Ty;
use ra_ap_hir_ty::TyExt;
use ra_ap_hir_ty::WhereClause;
use ra_ap_hir_ty::{Binders, FnPointer};
use ra_ap_hir_ty::{Interner, ProjectionTy};
+use ra_ap_hir_ty::{TraitRefExt, from_assoc_type_id};
use ra_ap_ide_db::RootDatabase;
use ra_ap_vfs::{Vfs, VfsPath};
+use ra_ap_hir_def::data::ConstFlags;
+use ra_ap_hir_def::item_tree::StaticFlags;
+use ra_ap_hir_ty::db::InternedCallableDefId;
use std::hash::Hasher;
use std::{cmp::Ordering, collections::HashMap, path::PathBuf};
use std::{hash::Hash, vec};
@@ -374,7 +377,7 @@ fn emit_const(
attrs: vec![],
body: None,
is_const: true,
- is_default: konst.has_body,
+ is_default: konst.flags.contains(ConstFlags::HAS_BODY),
type_repr,
visibility,
})
@@ -407,9 +410,9 @@ fn emit_static(
body: None,
type_repr,
visibility,
- is_mut: statik.mutable,
+ is_mut: statik.flags.contains(StaticFlags::MUTABLE),
is_static: true,
- is_unsafe: statik.has_unsafe_kw,
+ is_unsafe: statik.flags.contains(StaticFlags::HAS_UNSAFE_KW),
})
.into(),
);
@@ -774,7 +777,9 @@ fn const_or_function(
let type_: &chalk_ir::Ty = type_.skip_binders();
match type_.kind(ra_ap_hir_ty::Interner) {
chalk_ir::TyKind::FnDef(fn_def_id, parameters) => {
- let data = db.fn_def_datum(*fn_def_id);
+ let callable_def_id =
+ db.lookup_intern_callable_def(InternedCallableDefId::from(*fn_def_id));
+ let data = db.fn_def_datum(callable_def_id);
let sig = ra_ap_hir_ty::CallableSig::from_def(db, *fn_def_id, parameters);
let params = sig
@@ -1200,7 +1205,7 @@ fn emit_hir_ty(
substitution: _,
}))
| chalk_ir::TyKind::AssociatedType(associated_ty_id, _) => {
- let assoc_ty_data = db.associated_ty_data(*associated_ty_id);
+ let assoc_ty_data = db.associated_ty_data(from_assoc_type_id(*associated_ty_id));
let _name = db
.type_alias_data(assoc_ty_data.name)
@@ -1302,6 +1307,7 @@ fn emit_variant_data(trap: &mut TrapFile, db: &dyn HirDatabase, variant_id: Vari
trap.emit(generated::StructField {
id: trap::TrapId::Star,
attrs: vec![],
+ is_unsafe: false,
name,
type_repr,
visibility,
diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list
index 56c8762bcdd..82b6665615b 100644
--- a/rust/extractor/src/generated/.generated.list
+++ b/rust/extractor/src/generated/.generated.list
@@ -1,2 +1,2 @@
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
-top.rs 50fa90457102611ea7892153e4beb7512d3704a1c78d9bb8e75eb96b98b31740 50fa90457102611ea7892153e4beb7512d3704a1c78d9bb8e75eb96b98b31740
+top.rs 060225ccbae440eef117e2ef0a82f3deba29e6ba2d35f00281f9c0e6a945e692 060225ccbae440eef117e2ef0a82f3deba29e6ba2d35f00281f9c0e6a945e692
diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs
index b65cec68264..caeeb7552a7 100644
--- a/rust/extractor/src/generated/top.rs
+++ b/rust/extractor/src/generated/top.rs
@@ -2612,6 +2612,7 @@ pub struct StructField {
pub id: trap::TrapId,
pub attrs: Vec>,
pub default: Option>,
+ pub is_unsafe: bool,
pub name: Option>,
pub type_repr: Option>,
pub visibility: Option>,
@@ -2630,6 +2631,9 @@ impl trap::TrapEntry for StructField {
if let Some(v) = self.default {
out.add_tuple("struct_field_defaults", vec![id.into(), v.into()]);
}
+ if self.is_unsafe {
+ out.add_tuple("struct_field_is_unsafe", vec![id.into()]);
+ }
if let Some(v) = self.name {
out.add_tuple("struct_field_names", vec![id.into(), v.into()]);
}
diff --git a/rust/extractor/src/rust_analyzer.rs b/rust/extractor/src/rust_analyzer.rs
index 1947dcbe09f..ef4c638efbe 100644
--- a/rust/extractor/src/rust_analyzer.rs
+++ b/rust/extractor/src/rust_analyzer.rs
@@ -1,5 +1,5 @@
use itertools::Itertools;
-use ra_ap_base_db::{EditionedFileId, RootQueryDb, SourceDatabase};
+use ra_ap_base_db::{EditionedFileId, FileText, RootQueryDb, SourceDatabase};
use ra_ap_hir::Semantics;
use ra_ap_ide_db::RootDatabase;
use ra_ap_load_cargo::{LoadCargoConfig, load_workspace_at};
@@ -7,7 +7,6 @@ use ra_ap_paths::{AbsPath, Utf8PathBuf};
use ra_ap_project_model::ProjectManifest;
use ra_ap_project_model::{CargoConfig, ManifestPath};
use ra_ap_span::Edition;
-use ra_ap_span::EditionedFileId as SpanEditionedFileId;
use ra_ap_span::TextRange;
use ra_ap_span::TextSize;
use ra_ap_syntax::SourceFile;
@@ -54,7 +53,6 @@ impl<'a> RustAnalyzer<'a> {
) -> Option<(RootDatabase, Vfs)> {
let progress = |t| (trace!("progress: {}", t));
let manifest = project.manifest_path();
-
match load_workspace_at(manifest.as_ref(), config, load_config, &progress) {
Ok((db, vfs, _macro_server)) => Some((db, vfs)),
Err(err) => {
@@ -66,67 +64,70 @@ impl<'a> RustAnalyzer<'a> {
pub fn new(vfs: &'a Vfs, semantics: &'a Semantics<'a, RootDatabase>) -> Self {
RustAnalyzer::WithSemantics { vfs, semantics }
}
- pub fn parse(&self, path: &Path) -> ParseResult {
- let no_semantics_reason;
+ fn get_file_data(
+ &self,
+ path: &Path,
+ ) -> Result<(&Semantics, EditionedFileId, FileText), &str> {
match self {
+ RustAnalyzer::WithoutSemantics { reason } => Err(reason),
RustAnalyzer::WithSemantics { vfs, semantics } => {
- if let Some(file_id) = path_to_file_id(path, vfs) {
- if let Ok(input) = std::panic::catch_unwind(|| semantics.db.file_text(file_id))
- {
- let file_id = EditionedFileId::new(
- semantics.db,
- SpanEditionedFileId::current_edition(file_id),
- );
- let source_file = semantics.parse(file_id);
- let errors = semantics
- .db
- .parse_errors(file_id)
- .into_iter()
- .flat_map(|x| x.to_vec())
- .collect();
-
- return ParseResult {
- ast: source_file,
- text: input.text(semantics.db),
- errors,
- semantics_info: Ok(FileSemanticInformation { file_id, semantics }),
- };
- }
- debug!(
- "No text available for file_id '{:?}', falling back to loading file '{}' from disk.",
- file_id,
- path.to_string_lossy()
- );
- no_semantics_reason = "no text available for the file in the project";
- } else {
- no_semantics_reason = "file not found in project";
- }
- }
- RustAnalyzer::WithoutSemantics { reason } => {
- no_semantics_reason = reason;
+ let file_id = path_to_file_id(path, vfs).ok_or("file not found in project")?;
+ let input = std::panic::catch_unwind(|| semantics.db.file_text(file_id))
+ .or(Err("no text available for the file in the project"))?;
+ let editioned_file_id = semantics
+ .attach_first_edition(file_id)
+ .ok_or("failed to determine rust edition")?;
+ Ok((
+ semantics,
+ EditionedFileId::new(semantics.db, editioned_file_id),
+ input,
+ ))
}
}
- let mut errors = Vec::new();
- let input = match std::fs::read(path) {
- Ok(data) => data,
- Err(e) => {
- errors.push(SyntaxError::new(
- format!("Could not read {}: {}", path.to_string_lossy(), e),
- TextRange::empty(TextSize::default()),
- ));
- vec![]
- }
- };
- let (input, err) = from_utf8_lossy(&input);
+ }
- let parse = ra_ap_syntax::ast::SourceFile::parse(&input, Edition::CURRENT);
- errors.extend(parse.errors());
- errors.extend(err);
- ParseResult {
- ast: parse.tree(),
- text: input.as_ref().into(),
- errors,
- semantics_info: Err(no_semantics_reason),
+ pub fn parse(&self, path: &Path) -> ParseResult {
+ match self.get_file_data(path) {
+ Ok((semantics, file_id, input)) => {
+ let source_file = semantics.parse(file_id);
+ let errors = semantics
+ .db
+ .parse_errors(file_id)
+ .into_iter()
+ .flat_map(|x| x.to_vec())
+ .collect();
+
+ ParseResult {
+ ast: source_file,
+ text: input.text(semantics.db),
+ errors,
+ semantics_info: Ok(FileSemanticInformation { file_id, semantics }),
+ }
+ }
+ Err(reason) => {
+ let mut errors = Vec::new();
+ let input = match std::fs::read(path) {
+ Ok(data) => data,
+ Err(e) => {
+ errors.push(SyntaxError::new(
+ format!("Could not read {}: {}", path.to_string_lossy(), e),
+ TextRange::empty(TextSize::default()),
+ ));
+ vec![]
+ }
+ };
+ let (input, err) = from_utf8_lossy(&input);
+
+ let parse = ra_ap_syntax::ast::SourceFile::parse(&input, Edition::CURRENT);
+ errors.extend(parse.errors());
+ errors.extend(err);
+ ParseResult {
+ ast: parse.tree(),
+ text: input.as_ref().into(),
+ errors,
+ semantics_info: Err(reason),
+ }
+ }
}
}
}
@@ -173,8 +174,10 @@ impl TomlReader {
}
fn workspace_members_match(workspace_dir: &AbsPath, members: &[String], target: &AbsPath) -> bool {
- members.iter().any(|p| {
- glob::Pattern::new(workspace_dir.join(p).as_str()).is_ok_and(|p| p.matches(target.as_str()))
+ target.strip_prefix(workspace_dir).is_some_and(|rel_path| {
+ members
+ .iter()
+ .any(|p| glob::Pattern::new(p).is_ok_and(|p| p.matches(rel_path.as_str())))
})
}
diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs
index 9f8e52e0a45..32b9c2367a6 100644
--- a/rust/extractor/src/translate/generated.rs
+++ b/rust/extractor/src/translate/generated.rs
@@ -1850,6 +1850,7 @@ impl Translator<'_> {
if self.should_be_excluded(&node) { return None; }
let attrs = node.attrs().filter_map(|x| self.emit_attr(x)).collect();
let default = node.expr().and_then(|x| self.emit_expr(x));
+ let is_unsafe = node.unsafe_token().is_some();
let name = node.name().and_then(|x| self.emit_name(x));
let type_repr = node.ty().and_then(|x| self.emit_type(x));
let visibility = node.visibility().and_then(|x| self.emit_visibility(x));
@@ -1857,6 +1858,7 @@ impl Translator<'_> {
id: TrapId::Star,
attrs,
default,
+ is_unsafe,
name,
type_repr,
visibility,
diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list
index 0bd2931256e..0ff3e721e23 100644
--- a/rust/ql/.generated.list
+++ b/rust/ql/.generated.list
@@ -579,7 +579,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b
lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60
lib/codeql/rust/elements/internal/generated/ParenPat.qll 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc
lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 40ab5c592e7699c621787793743e33988de71ff42ca27599f5ab3ddb70e3f7d8 12c0a6eed2202ee3e892f61da3b3ce77ac3190854cdf3097e8d2be98aa3cb91d
-lib/codeql/rust/elements/internal/generated/ParentChild.qll 3a9dd595f34bc5841d21f91882b01f2882b18b70e8c718e81d491b4b33bad82b fb40a76aff319ec5f7dae9a05da083b337887b0918b3702641b39342213ddf6f
+lib/codeql/rust/elements/internal/generated/ParentChild.qll d1770632e8d0c649ebcbcab9cbc653531ecf521bbf5d891941db8c0927ae6796 fb40a76aff319ec5f7dae9a05da083b337887b0918b3702641b39342213ddf6f
lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd
@@ -594,7 +594,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 51d1e9e683fc79dddbff
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
-lib/codeql/rust/elements/internal/generated/Raw.qll 4a73b51a4e7c995c42d68cf64ff8aff351d898f306ceedf70a009bf86bbf7d84 f7ccdbc4841d87dae7bbf6f58556901176c930a9a797a59dbc04269ca3b516ce
+lib/codeql/rust/elements/internal/generated/Raw.qll 6e33d9fa21ee3287a0ebc27856a09f4fdc4d587b5a31ff1c4337106de7ca1a2e eece38e6accb6b9d8838fd05edd7cbaf6f7ee37190adbef2b023ad91064d1622
lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66
lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05
lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 3d8c0bd296d33b91a81633f697a43269a6538df06d277262d3990d3f6880ef57 13680f39e89bcd8299c218aba396f3deec804597e6f7cb7d4a7e7c748b6faa77
@@ -615,7 +615,7 @@ lib/codeql/rust/elements/internal/generated/Struct.qll b54a48c32d99345f22f189da8
lib/codeql/rust/elements/internal/generated/StructExpr.qll c6d861eaa0123b103fd9ffd2485423419ef9b7e0b4af9ed2a2090d8ec534f65d 50da99ee44771e1239ed8919f711991dd3ec98589fbe49b49b68c88074a07d74
lib/codeql/rust/elements/internal/generated/StructExprField.qll 6bdc52ed325fd014495410c619536079b8c404e2247bd2435aa7685dd56c3833 501a30650cf813176ff325a1553da6030f78d14be3f84fea6d38032f4262c6b0
lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll b19b6869a6828c7a39a7312539eb29fd21734ff47dfd02281de74194fd565d7e 3cadebffaa937e367a5e1da6741e4e9e5c9a9c7f7555e28cfa70639afd19db7c
-lib/codeql/rust/elements/internal/generated/StructField.qll bcbaa836d9b9889c87ba57c6ea733cdc85425168d9df05aca5cfd051851d8cd1 a17034896bc7fa25c84e40b460109d122ca1e85632cf8ac620f66f3eb0ff81b5
+lib/codeql/rust/elements/internal/generated/StructField.qll 18b62eb2ea7d3fe109308540cb219763e968b866c8600226b44f81159d3c549b 1acfc0da7ae1d8d4b3fa2cdcc440cc1423c5cd885da03c0e8b2c81a2b089cbbb
lib/codeql/rust/elements/internal/generated/StructFieldList.qll 8911a44217d091b05f488da4e012cb026aed0630caa84ca301bbcbd054c9a28c a433383fea7e42f20750aa43e6070c23baad761a4264be99257541c1004ead31
lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58
lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf
@@ -1087,7 +1087,7 @@ test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql 33dc3f
test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql cd7f5236f6b660fc064f3a04f3a58d720ed4e81916cbd1a049c1fac7171108ed 61317928d0833f7bb55255a5045bedc0913db1266e963ede97d597ee43e3ddd9
test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.ql 1292aec1141bdb75fd8e0993f683035f396a0e6c841b76ee86a0a1d3dce0dbc4 450eccbd07cc0aa81cef698f43d60aeb55f8952a573eaf84a389a6449c3d63a7
test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql d0470b9846323d0408e0f26444cdc5322d78ce1ac203073ff4f556dac5343be7 280712a0b3714256aff4c2a4370fd43e70c418f526e383ed7100d61cdf790c36
-test/extractor-tests/generated/StructField/StructField.ql 7943d00e32171da93fae8215456c79b2df590cffa7241f4c0e78b0d7d525b1b2 6d5e3825075d2cb4438adf699a5a92ce22301ea58888d63ea336118bf29c0205
+test/extractor-tests/generated/StructField/StructField.ql 5ec75ec3c1a18299259dfa041790e9b4a791ceb1706aadea3537d0a67e7e65bb cba580a8678547dc88a736bd639cc4d8e84ec32a9ad1095e50f7e03047c37f1c
test/extractor-tests/generated/StructField/StructField_getAttr.ql a01715bc688d5fa48c9dd4bfab21d0909169f851a290895c13a181f22c0e73a9 fa6ffcf007492d9e1b7f90d571b9747bd47b2dc29e558a8e1c3013c5949dcdb7
test/extractor-tests/generated/StructField/StructField_getDefault.ql deccc63b81892cd1b293d8b328ad5b3efdf32892efc8b161dfcd89330ca6b5a2 9a9f306f63208ce30d26f91dd15b94867a7d9affd31a0f51a3d1d2ce50786abc
test/extractor-tests/generated/StructField/StructField_getName.ql 4c5a7e00b758a744a719bff63d493ee7d31ff8b3010e00c1d1449034d00130ec 9b284d848e5c86eac089f33deca7586441a89d927e7703cb4f98bb7c65a7238c
diff --git a/rust/ql/integration-tests/conftest.py b/rust/ql/integration-tests/conftest.py
index a1fbcf4e18d..578a81a849a 100644
--- a/rust/ql/integration-tests/conftest.py
+++ b/rust/ql/integration-tests/conftest.py
@@ -2,13 +2,35 @@ import pytest
import json
import commands
import pathlib
+import tomllib
+
+
+@pytest.fixture(params=[2018, 2021, 2024])
+def rust_edition(request):
+ return request.param
@pytest.fixture
-def cargo(cwd):
- assert (cwd / "Cargo.toml").exists()
+def cargo(cwd, rust_edition):
+ manifest_file = cwd / "Cargo.toml"
+ assert manifest_file.exists()
(cwd / "rust-project.json").unlink(missing_ok=True)
+ def update(file):
+ contents = file.read_text()
+ m = tomllib.loads(contents)
+ if 'package' in m:
+ # tomllib does not support writing, and we don't want to use further dependencies
+ # so we just do a dumb search and replace
+ contents = contents.replace(f'edition = "{m["package"]["edition"]}"', f'edition = "{rust_edition}"')
+ file.write_text(contents)
+ if 'members' in m.get('workspace', ()):
+ for member in m['workspace']['members']:
+ update(file.parent / member / "Cargo.toml")
+
+ update(manifest_file)
+
+
@pytest.fixture(scope="session")
def rust_sysroot_src() -> str:
rust_sysroot = pathlib.Path(commands.run("rustc --print sysroot", _capture=True))
@@ -16,15 +38,19 @@ def rust_sysroot_src() -> str:
assert ret.exists()
return str(ret)
+
@pytest.fixture
-def rust_project(cwd, rust_sysroot_src):
+def rust_project(cwd, rust_sysroot_src, rust_edition):
project_file = cwd / "rust-project.json"
assert project_file.exists()
project = json.loads(project_file.read_text())
project["sysroot_src"] = rust_sysroot_src
+ for c in project["crates"]:
+ c["edition"] = str(rust_edition)
project_file.write_text(json.dumps(project, indent=4))
(cwd / "Cargo.toml").unlink(missing_ok=True)
+
@pytest.fixture
def rust_check_diagnostics(check_diagnostics):
check_diagnostics.redact += [
diff --git a/rust/ql/integration-tests/hello-project/Cargo.toml b/rust/ql/integration-tests/hello-project/Cargo.toml
index 909b5b525ff..7ad4f694f48 100644
--- a/rust/ql/integration-tests/hello-project/Cargo.toml
+++ b/rust/ql/integration-tests/hello-project/Cargo.toml
@@ -2,6 +2,6 @@
[package]
name = "hello-cargo"
version = "0.1.0"
-edition = "2021"
+edition = "2021" # replaced in test
[dependencies]
diff --git a/rust/ql/integration-tests/hello-workspace/exe/Cargo.toml b/rust/ql/integration-tests/hello-workspace/exe/Cargo.toml
index b63ccfd5da5..4d9a0e54307 100644
--- a/rust/ql/integration-tests/hello-workspace/exe/Cargo.toml
+++ b/rust/ql/integration-tests/hello-workspace/exe/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "exe"
version = "0.1.0"
-edition = "2021"
+edition = "2021" # replaced in test
[dependencies]
lib = { path = "../lib" }
diff --git a/rust/ql/integration-tests/hello-workspace/lib/Cargo.toml b/rust/ql/integration-tests/hello-workspace/lib/Cargo.toml
index e8fc5405b71..9d59bf133d3 100644
--- a/rust/ql/integration-tests/hello-workspace/lib/Cargo.toml
+++ b/rust/ql/integration-tests/hello-workspace/lib/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "lib"
version = "0.1.0"
-edition = "2021"
+edition = "2021" # replaced in test
[dependencies]
diff --git a/rust/ql/integration-tests/hello-workspace/rust-project.json b/rust/ql/integration-tests/hello-workspace/rust-project.json
index d8c73fa41b6..fae89dcecce 100644
--- a/rust/ql/integration-tests/hello-workspace/rust-project.json
+++ b/rust/ql/integration-tests/hello-workspace/rust-project.json
@@ -21,4 +21,4 @@
"deps": []
}
]
-}
\ No newline at end of file
+}
diff --git a/rust/ql/integration-tests/hello-workspace/test_workspace.py b/rust/ql/integration-tests/hello-workspace/test_workspace.py
index fe8dbc69141..acf46b70aa6 100644
--- a/rust/ql/integration-tests/hello-workspace/test_workspace.py
+++ b/rust/ql/integration-tests/hello-workspace/test_workspace.py
@@ -1,6 +1,5 @@
import pytest
-
@pytest.mark.ql_test("steps.ql", expected=".cargo.expected")
@pytest.mark.ql_test("summary.qlref", expected=".cargo.expected")
def test_cargo(codeql, rust, cargo, check_source_archive, rust_check_diagnostics):
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
index 34d29ba230e..3bd57ae9862 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
@@ -955,6 +955,11 @@ module Raw {
*/
Expr getDefault() { struct_field_defaults(this, result) }
+ /**
+ * Holds if this struct field is unsafe.
+ */
+ predicate isUnsafe() { struct_field_is_unsafe(this) }
+
/**
* Gets the name of this struct field, if it exists.
*/
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll
index c5525b86dba..cd392811e19 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll
@@ -64,6 +64,11 @@ module Generated {
*/
final predicate hasDefault() { exists(this.getDefault()) }
+ /**
+ * Holds if this struct field is unsafe.
+ */
+ predicate isUnsafe() { Synth::convertStructFieldToRaw(this).(Raw::StructField).isUnsafe() }
+
/**
* Gets the name of this struct field, if it exists.
*/
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index 31fbf7fe4cf..6305b336995 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -178,7 +178,7 @@ abstract class ItemNode extends Locatable {
Stages::PathResolutionStage::ref() and
result = this.getASuccessorRec(name)
or
- preludeEdge(this, name, result)
+ preludeEdge(this, name, result) and not declares(this, _, name)
or
name = "super" and
if this instanceof Module or this instanceof SourceFile
diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml
index 817d23c54c2..cfe69f9279a 100644
--- a/rust/ql/lib/qlpack.yml
+++ b/rust/ql/lib/qlpack.yml
@@ -4,6 +4,7 @@ groups: rust
extractor: rust
dbscheme: rust.dbscheme
library: true
+upgrades: upgrades
dependencies:
codeql/controlflow: ${workspace}
codeql/dataflow: ${workspace}
diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme
index 256e80c2dce..e8707b675dc 100644
--- a/rust/ql/lib/rust.dbscheme
+++ b/rust/ql/lib/rust.dbscheme
@@ -976,6 +976,11 @@ struct_field_defaults(
int default: @expr ref
);
+#keyset[id]
+struct_field_is_unsafe(
+ int id: @struct_field ref
+);
+
#keyset[id]
struct_field_names(
int id: @struct_field ref,
diff --git a/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/old.dbscheme b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/old.dbscheme
new file mode 100644
index 00000000000..256e80c2dce
--- /dev/null
+++ b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/old.dbscheme
@@ -0,0 +1,3601 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @macro_stmts
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id]
+crate_modules(
+ int id: @crate ref,
+ int module: @module ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+macro_stmts(
+ unique int id: @macro_stmts
+);
+
+#keyset[id]
+macro_stmts_exprs(
+ int id: @macro_stmts ref,
+ int expr: @expr ref
+);
+
+#keyset[id, index]
+macro_stmts_statements(
+ int id: @macro_stmts ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_expandeds(
+ int id: @macro_call ref,
+ int expanded: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/rust.dbscheme b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/rust.dbscheme
new file mode 100644
index 00000000000..e8707b675dc
--- /dev/null
+++ b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/rust.dbscheme
@@ -0,0 +1,3606 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @macro_stmts
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id]
+crate_modules(
+ int id: @crate ref,
+ int module: @module ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+macro_stmts(
+ unique int id: @macro_stmts
+);
+
+#keyset[id]
+macro_stmts_exprs(
+ int id: @macro_stmts ref,
+ int expr: @expr ref
+);
+
+#keyset[id, index]
+macro_stmts_statements(
+ int id: @macro_stmts ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_is_unsafe(
+ int id: @struct_field ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_expandeds(
+ int id: @macro_call ref,
+ int expanded: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/upgrade.properties b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/upgrade.properties
new file mode 100644
index 00000000000..c977c1fd43f
--- /dev/null
+++ b/rust/ql/lib/upgrades/256e80c2dceafb43358213b1ac0e386ea6ef73c3/upgrade.properties
@@ -0,0 +1,2 @@
+description: Add `struct_field_is_unsafe` table
+compatibility: backwards
diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql
index dfd4327e74c..cf7b3d995e1 100644
--- a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql
+++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql
@@ -3,15 +3,16 @@ import codeql.rust.elements
import TestUtils
from
- StructField x, int getNumberOfAttrs, string hasDefault, string hasName, string hasTypeRepr,
- string hasVisibility
+ StructField x, int getNumberOfAttrs, string hasDefault, string isUnsafe, string hasName,
+ string hasTypeRepr, string hasVisibility
where
toBeTested(x) and
not x.isUnknown() and
getNumberOfAttrs = x.getNumberOfAttrs() and
(if x.hasDefault() then hasDefault = "yes" else hasDefault = "no") and
+ (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and
(if x.hasName() then hasName = "yes" else hasName = "no") and
(if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and
if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no"
-select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasDefault:", hasDefault, "hasName:", hasName,
- "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility
+select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasDefault:", hasDefault, "isUnsafe:", isUnsafe,
+ "hasName:", hasName, "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility
diff --git a/rust/ql/test/library-tests/path-resolution/my.rs b/rust/ql/test/library-tests/path-resolution/my.rs
index 2dcb1c76aeb..8a94c169f6f 100644
--- a/rust/ql/test/library-tests/path-resolution/my.rs
+++ b/rust/ql/test/library-tests/path-resolution/my.rs
@@ -16,3 +16,21 @@ mod my4 {
}
pub use my4::my5::f as nested_f; // $ item=I201
+
+type Result<
+ T, // T
+> = ::std::result::Result<
+ T, // $ item=T
+ String,
+>; // my::Result
+
+fn int_div(
+ x: i32, //
+ y: i32,
+) -> Result // $ item=my::Result
+{
+ if y == 0 {
+ return Err("Div by zero".to_string());
+ }
+ Ok(x / y)
+}
diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
index 7fbbca66c39..b0a6274955b 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -322,6 +322,13 @@ resolvePath
| my.rs:18:9:18:11 | my4 | my.rs:14:1:16:1 | mod my4 |
| my.rs:18:9:18:16 | ...::my5 | my.rs:15:5:15:16 | mod my5 |
| my.rs:18:9:18:19 | ...::f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
+| my.rs:22:5:22:9 | std | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/std/src/lib.rs:0:0:0:0 | Crate(std@0.0.0) |
+| my.rs:22:5:22:17 | ...::result | file://:0:0:0:0 | mod result |
+| my.rs:22:5:25:1 | ...::Result::<...> | file://:0:0:0:0 | enum Result |
+| my.rs:23:5:23:5 | T | my.rs:21:5:21:5 | T |
+| my.rs:30:6:30:16 | Result::<...> | my.rs:20:1:25:2 | type Result<...> |
+| my.rs:33:16:33:18 | Err | file://:0:0:0:0 | Err |
+| my.rs:35:5:35:6 | Ok | file://:0:0:0:0 | Ok |
| my/nested.rs:9:13:9:13 | f | my/nested.rs:3:9:5:9 | fn f |
| my/nested.rs:15:9:15:15 | nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| my/nested.rs:15:9:15:18 | ...::f | my/nested.rs:3:9:5:9 | fn f |
diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.ql b/rust/ql/test/library-tests/path-resolution/path-resolution.ql
index 4fdcf39c6c6..bd522597a2e 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql
@@ -5,6 +5,17 @@ import TestUtils
query predicate mod(Module m) { toBeTested(m) }
-query predicate resolvePath(Path p, ItemNode i) {
+class ItemNodeLoc extends Locatable instanceof ItemNode {
+ predicate hasLocationInfo(
+ string filepath, int startline, int startcolumn, int endline, int endcolumn
+ ) {
+ exists(string file |
+ super.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and
+ filepath = file.regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/")
+ )
+ }
+}
+
+query predicate resolvePath(Path p, ItemNodeLoc i) {
toBeTested(p) and not p.isInMacroExpansion() and i = resolvePath(p)
}
diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/ExtractionConsistency.expected
deleted file mode 100644
index bd41fe2245a..00000000000
--- a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/ExtractionConsistency.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-extractionWarning
-| test_logging.rs:90:12:90:30 | expected R_PAREN |
-| test_logging.rs:90:12:90:30 | macro expansion failed: the macro '$crate::__private_api::format_args' expands to ERROR but a Expr was expected |
\ No newline at end of file
diff --git a/rust/schema/ast.py b/rust/schema/ast.py
index e5be9e1a0a0..dabe1be807a 100644
--- a/rust/schema/ast.py
+++ b/rust/schema/ast.py
@@ -539,6 +539,7 @@ class StructExprFieldList(AstNode, ):
class StructField(AstNode, ):
attrs: list["Attr"] | child
default: optional["Expr"] | child
+ is_unsafe: predicate
name: optional["Name"] | child
type_repr: optional["TypeRepr"] | child
visibility: optional["Visibility"] | child
diff --git a/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/downgrade.ql b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/downgrade.ql
new file mode 100644
index 00000000000..bab33cc0962
--- /dev/null
+++ b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/downgrade.ql
@@ -0,0 +1,40 @@
+class Element extends @element {
+ string toString() { none() }
+}
+
+predicate removedClass(Element e, string name, Element child) {
+ current_context_isolation_exprs(e, child) and name = "CurrentContextIsolationExpr"
+ or
+ extract_function_isolation_exprs(e, child) and name = "ExtractFunctionIsolationExpr"
+ or
+ (
+ actor_isolation_erasure_exprs(e) and name = "ActorIsolationErasureExpr"
+ or
+ unreachable_exprs(e) and name = "UnreachableExpr"
+ ) and
+ implicit_conversion_exprs(e, child)
+}
+
+query predicate new_unspecified_elements(Element e, string property, string error) {
+ unspecified_elements(e, property, error)
+ or
+ exists(string name |
+ removedClass(e, name, _) and
+ property = "" and
+ error = name + " nodes removed during database downgrade. Please update your CodeQL code."
+ )
+}
+
+query predicate new_unspecified_element_children(Element e, int index, Element child) {
+ unspecified_element_children(e, index, child)
+ or
+ removedClass(e, _, child) and index = 0
+}
+
+query predicate new_implicit_conversion_exprs(Element e, Element child) {
+ implicit_conversion_exprs(e, child) and not removedClass(e, _, _)
+}
+
+query predicate new_expr_types(Element e, Element type) {
+ expr_types(e, type) and not removedClass(e, _, _)
+}
diff --git a/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/old.dbscheme b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/old.dbscheme
new file mode 100644
index 00000000000..be2357fd002
--- /dev/null
+++ b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/old.dbscheme
@@ -0,0 +1,2815 @@
+// generated by codegen/codegen.py, do not edit
+
+// from prefix.dbscheme
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(
+ string prefix: string ref
+);
+
+
+// from schema.py
+
+@element =
+ @file
+| @generic_context
+| @locatable
+| @location
+| @type
+;
+
+#keyset[id]
+element_is_unknown(
+ int id: @element ref
+);
+
+@file =
+ @db_file
+;
+
+#keyset[id]
+files(
+ int id: @file ref,
+ string name: string ref
+);
+
+#keyset[id]
+file_is_successfully_extracted(
+ int id: @file ref
+);
+
+@locatable =
+ @argument
+| @ast_node
+| @comment
+| @diagnostics
+| @error_element
+;
+
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_or_none ref
+);
+
+@location =
+ @db_location
+;
+
+#keyset[id]
+locations(
+ int id: @location ref,
+ int file: @file_or_none ref,
+ int start_line: int ref,
+ int start_column: int ref,
+ int end_line: int ref,
+ int end_column: int ref
+);
+
+@ast_node =
+ @availability_info
+| @availability_spec
+| @callable
+| @case_label_item
+| @condition_element
+| @decl
+| @expr
+| @key_path_component
+| @macro_role
+| @pattern
+| @stmt
+| @stmt_condition
+| @type_repr
+;
+
+comments(
+ unique int id: @comment,
+ string text: string ref
+);
+
+db_files(
+ unique int id: @db_file
+);
+
+db_locations(
+ unique int id: @db_location
+);
+
+diagnostics(
+ unique int id: @diagnostics,
+ string text: string ref,
+ int kind: int ref
+);
+
+@error_element =
+ @error_expr
+| @error_type
+| @overloaded_decl_ref_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_chain_result_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @unresolved_type
+| @unresolved_type_conversion_expr
+| @unspecified_element
+;
+
+availability_infos(
+ unique int id: @availability_info
+);
+
+#keyset[id]
+availability_info_is_unavailable(
+ int id: @availability_info ref
+);
+
+#keyset[id, index]
+availability_info_specs(
+ int id: @availability_info ref,
+ int index: int ref,
+ int spec: @availability_spec_or_none ref
+);
+
+@availability_spec =
+ @other_availability_spec
+| @platform_version_availability_spec
+;
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_names(
+ int id: @callable ref,
+ string name: string ref
+);
+
+#keyset[id]
+callable_self_params(
+ int id: @callable ref,
+ int self_param: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+callable_params(
+ int id: @callable ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+#keyset[id]
+callable_bodies(
+ int id: @callable ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+callable_captures(
+ int id: @callable ref,
+ int index: int ref,
+ int capture: @captured_decl_or_none ref
+);
+
+key_path_components(
+ unique int id: @key_path_component,
+ int kind: int ref,
+ int component_type: @type_or_none ref
+);
+
+#keyset[id, index]
+key_path_component_subscript_arguments(
+ int id: @key_path_component ref,
+ int index: int ref,
+ int subscript_argument: @argument_or_none ref
+);
+
+#keyset[id]
+key_path_component_tuple_indices(
+ int id: @key_path_component ref,
+ int tuple_index: int ref
+);
+
+#keyset[id]
+key_path_component_decl_refs(
+ int id: @key_path_component ref,
+ int decl_ref: @value_decl_or_none ref
+);
+
+macro_roles(
+ unique int id: @macro_role,
+ int kind: int ref,
+ int macro_syntax: int ref
+);
+
+#keyset[id, index]
+macro_role_conformances(
+ int id: @macro_role ref,
+ int index: int ref,
+ int conformance: @type_expr_or_none ref
+);
+
+#keyset[id, index]
+macro_role_names(
+ int id: @macro_role ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unspecified_elements(
+ unique int id: @unspecified_element,
+ string property: string ref,
+ string error: string ref
+);
+
+#keyset[id]
+unspecified_element_parents(
+ int id: @unspecified_element ref,
+ int parent: @element ref
+);
+
+#keyset[id]
+unspecified_element_indices(
+ int id: @unspecified_element ref,
+ int index: int ref
+);
+
+#keyset[id, index]
+unspecified_element_children(
+ int id: @unspecified_element ref,
+ int index: int ref,
+ int child: @ast_node_or_none ref
+);
+
+other_availability_specs(
+ unique int id: @other_availability_spec
+);
+
+platform_version_availability_specs(
+ unique int id: @platform_version_availability_spec,
+ string platform: string ref,
+ string version: string ref
+);
+
+@decl =
+ @captured_decl
+| @enum_case_decl
+| @extension_decl
+| @if_config_decl
+| @import_decl
+| @missing_member_decl
+| @operator_decl
+| @pattern_binding_decl
+| @pound_diagnostic_decl
+| @precedence_group_decl
+| @top_level_code_decl
+| @value_decl
+;
+
+#keyset[id]
+decls( //dir=decl
+ int id: @decl ref,
+ int module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+decl_members( //dir=decl
+ int id: @decl ref,
+ int index: int ref,
+ int member: @decl_or_none ref
+);
+
+@generic_context =
+ @extension_decl
+| @function
+| @generic_type_decl
+| @macro_decl
+| @subscript_decl
+;
+
+#keyset[id, index]
+generic_context_generic_type_params( //dir=decl
+ int id: @generic_context ref,
+ int index: int ref,
+ int generic_type_param: @generic_type_param_decl_or_none ref
+);
+
+captured_decls( //dir=decl
+ unique int id: @captured_decl,
+ int decl: @value_decl_or_none ref
+);
+
+#keyset[id]
+captured_decl_is_direct( //dir=decl
+ int id: @captured_decl ref
+);
+
+#keyset[id]
+captured_decl_is_escaping( //dir=decl
+ int id: @captured_decl ref
+);
+
+enum_case_decls( //dir=decl
+ unique int id: @enum_case_decl
+);
+
+#keyset[id, index]
+enum_case_decl_elements( //dir=decl
+ int id: @enum_case_decl ref,
+ int index: int ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+extension_decls( //dir=decl
+ unique int id: @extension_decl,
+ int extended_type_decl: @nominal_type_decl_or_none ref
+);
+
+#keyset[id, index]
+extension_decl_protocols( //dir=decl
+ int id: @extension_decl ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+if_config_decls( //dir=decl
+ unique int id: @if_config_decl
+);
+
+#keyset[id, index]
+if_config_decl_active_elements( //dir=decl
+ int id: @if_config_decl ref,
+ int index: int ref,
+ int active_element: @ast_node_or_none ref
+);
+
+import_decls( //dir=decl
+ unique int id: @import_decl
+);
+
+#keyset[id]
+import_decl_is_exported( //dir=decl
+ int id: @import_decl ref
+);
+
+#keyset[id]
+import_decl_imported_modules( //dir=decl
+ int id: @import_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+import_decl_declarations( //dir=decl
+ int id: @import_decl ref,
+ int index: int ref,
+ int declaration: @value_decl_or_none ref
+);
+
+missing_member_decls( //dir=decl
+ unique int id: @missing_member_decl,
+ string name: string ref
+);
+
+@operator_decl =
+ @infix_operator_decl
+| @postfix_operator_decl
+| @prefix_operator_decl
+;
+
+#keyset[id]
+operator_decls( //dir=decl
+ int id: @operator_decl ref,
+ string name: string ref
+);
+
+pattern_binding_decls( //dir=decl
+ unique int id: @pattern_binding_decl
+);
+
+#keyset[id, index]
+pattern_binding_decl_inits( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int init: @expr_or_none ref
+);
+
+#keyset[id, index]
+pattern_binding_decl_patterns( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int pattern: @pattern_or_none ref
+);
+
+pound_diagnostic_decls( //dir=decl
+ unique int id: @pound_diagnostic_decl,
+ int kind: int ref,
+ int message: @string_literal_expr_or_none ref
+);
+
+precedence_group_decls( //dir=decl
+ unique int id: @precedence_group_decl
+);
+
+top_level_code_decls( //dir=decl
+ unique int id: @top_level_code_decl,
+ int body: @brace_stmt_or_none ref
+);
+
+@value_decl =
+ @abstract_storage_decl
+| @enum_element_decl
+| @function
+| @macro_decl
+| @type_decl
+;
+
+#keyset[id]
+value_decls( //dir=decl
+ int id: @value_decl ref,
+ int interface_type: @type_or_none ref
+);
+
+@abstract_storage_decl =
+ @subscript_decl
+| @var_decl
+;
+
+#keyset[id, index]
+abstract_storage_decl_accessors( //dir=decl
+ int id: @abstract_storage_decl ref,
+ int index: int ref,
+ int accessor: @accessor_or_none ref
+);
+
+enum_element_decls( //dir=decl
+ unique int id: @enum_element_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+enum_element_decl_params( //dir=decl
+ int id: @enum_element_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@function =
+ @accessor_or_named_function
+| @deinitializer
+| @initializer
+;
+
+infix_operator_decls( //dir=decl
+ unique int id: @infix_operator_decl
+);
+
+#keyset[id]
+infix_operator_decl_precedence_groups( //dir=decl
+ int id: @infix_operator_decl ref,
+ int precedence_group: @precedence_group_decl_or_none ref
+);
+
+macro_decls( //dir=decl
+ unique int id: @macro_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+macro_decl_parameters( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int parameter: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+macro_decl_roles( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int role: @macro_role_or_none ref
+);
+
+postfix_operator_decls( //dir=decl
+ unique int id: @postfix_operator_decl
+);
+
+prefix_operator_decls( //dir=decl
+ unique int id: @prefix_operator_decl
+);
+
+@type_decl =
+ @abstract_type_param_decl
+| @generic_type_decl
+| @module_decl
+;
+
+#keyset[id]
+type_decls( //dir=decl
+ int id: @type_decl ref,
+ string name: string ref
+);
+
+#keyset[id, index]
+type_decl_inherited_types( //dir=decl
+ int id: @type_decl ref,
+ int index: int ref,
+ int inherited_type: @type_or_none ref
+);
+
+@abstract_type_param_decl =
+ @associated_type_decl
+| @generic_type_param_decl
+;
+
+@accessor_or_named_function =
+ @accessor
+| @named_function
+;
+
+deinitializers( //dir=decl
+ unique int id: @deinitializer
+);
+
+@generic_type_decl =
+ @nominal_type_decl
+| @opaque_type_decl
+| @type_alias_decl
+;
+
+initializers( //dir=decl
+ unique int id: @initializer
+);
+
+module_decls( //dir=decl
+ unique int id: @module_decl
+);
+
+#keyset[id]
+module_decl_is_builtin_module( //dir=decl
+ int id: @module_decl ref
+);
+
+#keyset[id]
+module_decl_is_system_module( //dir=decl
+ int id: @module_decl ref
+);
+
+module_decl_imported_modules( //dir=decl
+ int id: @module_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+module_decl_exported_modules( //dir=decl
+ int id: @module_decl ref,
+ int exported_module: @module_decl_or_none ref
+);
+
+subscript_decls( //dir=decl
+ unique int id: @subscript_decl,
+ int element_type: @type_or_none ref
+);
+
+#keyset[id, index]
+subscript_decl_params( //dir=decl
+ int id: @subscript_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@var_decl =
+ @concrete_var_decl
+| @param_decl
+;
+
+#keyset[id]
+var_decls( //dir=decl
+ int id: @var_decl ref,
+ string name: string ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_attached_property_wrapper_types( //dir=decl
+ int id: @var_decl ref,
+ int attached_property_wrapper_type: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_patterns( //dir=decl
+ int id: @var_decl ref,
+ int parent_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_initializers( //dir=decl
+ int id: @var_decl ref,
+ int parent_initializer: @expr_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var: @var_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var: @var_decl_or_none ref
+);
+
+accessors( //dir=decl
+ unique int id: @accessor
+);
+
+#keyset[id]
+accessor_is_getter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_setter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_will_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_did_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_read( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_modify( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_address( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_mutable_address( //dir=decl
+ int id: @accessor ref
+);
+
+associated_type_decls( //dir=decl
+ unique int id: @associated_type_decl
+);
+
+concrete_var_decls( //dir=decl
+ unique int id: @concrete_var_decl,
+ int introducer_int: int ref
+);
+
+generic_type_param_decls( //dir=decl
+ unique int id: @generic_type_param_decl
+);
+
+named_functions( //dir=decl
+ unique int id: @named_function
+);
+
+@nominal_type_decl =
+ @class_decl
+| @enum_decl
+| @protocol_decl
+| @struct_decl
+;
+
+#keyset[id]
+nominal_type_decls( //dir=decl
+ int id: @nominal_type_decl ref,
+ int type_: @type_or_none ref
+);
+
+opaque_type_decls( //dir=decl
+ unique int id: @opaque_type_decl,
+ int naming_declaration: @value_decl_or_none ref
+);
+
+#keyset[id, index]
+opaque_type_decl_opaque_generic_params( //dir=decl
+ int id: @opaque_type_decl ref,
+ int index: int ref,
+ int opaque_generic_param: @generic_type_param_type_or_none ref
+);
+
+param_decls( //dir=decl
+ unique int id: @param_decl
+);
+
+#keyset[id]
+param_decl_is_inout( //dir=decl
+ int id: @param_decl ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_vars( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var: @var_decl_or_none ref
+);
+
+type_alias_decls( //dir=decl
+ unique int id: @type_alias_decl,
+ int aliased_type: @type_or_none ref
+);
+
+class_decls( //dir=decl
+ unique int id: @class_decl
+);
+
+enum_decls( //dir=decl
+ unique int id: @enum_decl
+);
+
+protocol_decls( //dir=decl
+ unique int id: @protocol_decl
+);
+
+struct_decls( //dir=decl
+ unique int id: @struct_decl
+);
+
+arguments( //dir=expr
+ unique int id: @argument,
+ string label: string ref,
+ int expr: @expr_or_none ref
+);
+
+@expr =
+ @any_try_expr
+| @applied_property_wrapper_expr
+| @apply_expr
+| @assign_expr
+| @bind_optional_expr
+| @capture_list_expr
+| @closure_expr
+| @collection_expr
+| @consume_expr
+| @copy_expr
+| @current_context_isolation_expr
+| @decl_ref_expr
+| @default_argument_expr
+| @discard_assignment_expr
+| @dot_syntax_base_ignored_expr
+| @dynamic_type_expr
+| @enum_is_case_expr
+| @error_expr
+| @explicit_cast_expr
+| @extract_function_isolation_expr
+| @force_value_expr
+| @identity_expr
+| @if_expr
+| @implicit_conversion_expr
+| @in_out_expr
+| @key_path_application_expr
+| @key_path_dot_expr
+| @key_path_expr
+| @lazy_initialization_expr
+| @literal_expr
+| @lookup_expr
+| @make_temporarily_escapable_expr
+| @materialize_pack_expr
+| @obj_c_selector_expr
+| @one_way_expr
+| @opaque_value_expr
+| @open_existential_expr
+| @optional_evaluation_expr
+| @other_initializer_ref_expr
+| @overloaded_decl_ref_expr
+| @pack_element_expr
+| @pack_expansion_expr
+| @property_wrapper_value_placeholder_expr
+| @rebind_self_in_initializer_expr
+| @sequence_expr
+| @single_value_stmt_expr
+| @super_ref_expr
+| @tap_expr
+| @tuple_element_expr
+| @tuple_expr
+| @type_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @vararg_expansion_expr
+;
+
+#keyset[id]
+expr_types( //dir=expr
+ int id: @expr ref,
+ int type_: @type_or_none ref
+);
+
+@any_try_expr =
+ @force_try_expr
+| @optional_try_expr
+| @try_expr
+;
+
+#keyset[id]
+any_try_exprs( //dir=expr
+ int id: @any_try_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+applied_property_wrapper_exprs( //dir=expr
+ unique int id: @applied_property_wrapper_expr,
+ int kind: int ref,
+ int value: @expr_or_none ref,
+ int param: @param_decl_or_none ref
+);
+
+@apply_expr =
+ @binary_expr
+| @call_expr
+| @postfix_unary_expr
+| @prefix_unary_expr
+| @self_apply_expr
+;
+
+#keyset[id]
+apply_exprs( //dir=expr
+ int id: @apply_expr ref,
+ int function: @expr_or_none ref
+);
+
+#keyset[id, index]
+apply_expr_arguments( //dir=expr
+ int id: @apply_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+assign_exprs( //dir=expr
+ unique int id: @assign_expr,
+ int dest: @expr_or_none ref,
+ int source: @expr_or_none ref
+);
+
+bind_optional_exprs( //dir=expr
+ unique int id: @bind_optional_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+capture_list_exprs( //dir=expr
+ unique int id: @capture_list_expr,
+ int closure_body: @closure_expr_or_none ref
+);
+
+#keyset[id, index]
+capture_list_expr_binding_decls( //dir=expr
+ int id: @capture_list_expr ref,
+ int index: int ref,
+ int binding_decl: @pattern_binding_decl_or_none ref
+);
+
+@closure_expr =
+ @auto_closure_expr
+| @explicit_closure_expr
+;
+
+@collection_expr =
+ @array_expr
+| @dictionary_expr
+;
+
+consume_exprs( //dir=expr
+ unique int id: @consume_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+copy_exprs( //dir=expr
+ unique int id: @copy_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+current_context_isolation_exprs( //dir=expr
+ unique int id: @current_context_isolation_expr,
+ int actor: @expr_or_none ref
+);
+
+decl_ref_exprs( //dir=expr
+ unique int id: @decl_ref_expr,
+ int decl: @decl_or_none ref
+);
+
+#keyset[id, index]
+decl_ref_expr_replacement_types( //dir=expr
+ int id: @decl_ref_expr ref,
+ int index: int ref,
+ int replacement_type: @type_or_none ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+default_argument_exprs( //dir=expr
+ unique int id: @default_argument_expr,
+ int param_decl: @param_decl_or_none ref,
+ int param_index: int ref
+);
+
+#keyset[id]
+default_argument_expr_caller_side_defaults( //dir=expr
+ int id: @default_argument_expr ref,
+ int caller_side_default: @expr_or_none ref
+);
+
+discard_assignment_exprs( //dir=expr
+ unique int id: @discard_assignment_expr
+);
+
+dot_syntax_base_ignored_exprs( //dir=expr
+ unique int id: @dot_syntax_base_ignored_expr,
+ int qualifier: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+dynamic_type_exprs( //dir=expr
+ unique int id: @dynamic_type_expr,
+ int base: @expr_or_none ref
+);
+
+enum_is_case_exprs( //dir=expr
+ unique int id: @enum_is_case_expr,
+ int sub_expr: @expr_or_none ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+error_exprs( //dir=expr
+ unique int id: @error_expr
+);
+
+@explicit_cast_expr =
+ @checked_cast_expr
+| @coerce_expr
+;
+
+#keyset[id]
+explicit_cast_exprs( //dir=expr
+ int id: @explicit_cast_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+extract_function_isolation_exprs( //dir=expr
+ unique int id: @extract_function_isolation_expr,
+ int function_expr: @expr_or_none ref
+);
+
+force_value_exprs( //dir=expr
+ unique int id: @force_value_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@identity_expr =
+ @await_expr
+| @borrow_expr
+| @dot_self_expr
+| @paren_expr
+| @unresolved_member_chain_result_expr
+;
+
+#keyset[id]
+identity_exprs( //dir=expr
+ int id: @identity_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+if_exprs( //dir=expr
+ unique int id: @if_expr,
+ int condition: @expr_or_none ref,
+ int then_expr: @expr_or_none ref,
+ int else_expr: @expr_or_none ref
+);
+
+@implicit_conversion_expr =
+ @abi_safe_conversion_expr
+| @actor_isolation_erasure_expr
+| @any_hashable_erasure_expr
+| @archetype_to_super_expr
+| @array_to_pointer_expr
+| @bridge_from_obj_c_expr
+| @bridge_to_obj_c_expr
+| @class_metatype_to_object_expr
+| @collection_upcast_conversion_expr
+| @conditional_bridge_from_obj_c_expr
+| @covariant_function_conversion_expr
+| @covariant_return_conversion_expr
+| @derived_to_base_expr
+| @destructure_tuple_expr
+| @differentiable_function_expr
+| @differentiable_function_extract_original_expr
+| @erasure_expr
+| @existential_metatype_to_object_expr
+| @foreign_object_conversion_expr
+| @function_conversion_expr
+| @in_out_to_pointer_expr
+| @inject_into_optional_expr
+| @linear_function_expr
+| @linear_function_extract_original_expr
+| @linear_to_differentiable_function_expr
+| @load_expr
+| @metatype_conversion_expr
+| @pointer_to_pointer_expr
+| @protocol_metatype_to_object_expr
+| @string_to_pointer_expr
+| @underlying_to_opaque_expr
+| @unevaluated_instance_expr
+| @unreachable_expr
+| @unresolved_type_conversion_expr
+;
+
+#keyset[id]
+implicit_conversion_exprs( //dir=expr
+ int id: @implicit_conversion_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+in_out_exprs( //dir=expr
+ unique int id: @in_out_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+key_path_application_exprs( //dir=expr
+ unique int id: @key_path_application_expr,
+ int base: @expr_or_none ref,
+ int key_path: @expr_or_none ref
+);
+
+key_path_dot_exprs( //dir=expr
+ unique int id: @key_path_dot_expr
+);
+
+key_path_exprs( //dir=expr
+ unique int id: @key_path_expr
+);
+
+#keyset[id]
+key_path_expr_roots( //dir=expr
+ int id: @key_path_expr ref,
+ int root: @type_repr_or_none ref
+);
+
+#keyset[id, index]
+key_path_expr_components( //dir=expr
+ int id: @key_path_expr ref,
+ int index: int ref,
+ int component: @key_path_component_or_none ref
+);
+
+lazy_initialization_exprs( //dir=expr
+ unique int id: @lazy_initialization_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@literal_expr =
+ @builtin_literal_expr
+| @interpolated_string_literal_expr
+| @nil_literal_expr
+| @object_literal_expr
+| @regex_literal_expr
+;
+
+@lookup_expr =
+ @dynamic_lookup_expr
+| @member_ref_expr
+| @subscript_expr
+;
+
+#keyset[id]
+lookup_exprs( //dir=expr
+ int id: @lookup_expr ref,
+ int base: @expr_or_none ref
+);
+
+#keyset[id]
+lookup_expr_members( //dir=expr
+ int id: @lookup_expr ref,
+ int member: @decl_or_none ref
+);
+
+make_temporarily_escapable_exprs( //dir=expr
+ unique int id: @make_temporarily_escapable_expr,
+ int escaping_closure: @opaque_value_expr_or_none ref,
+ int nonescaping_closure: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+materialize_pack_exprs( //dir=expr
+ unique int id: @materialize_pack_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+obj_c_selector_exprs( //dir=expr
+ unique int id: @obj_c_selector_expr,
+ int sub_expr: @expr_or_none ref,
+ int method: @function_or_none ref
+);
+
+one_way_exprs( //dir=expr
+ unique int id: @one_way_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+opaque_value_exprs( //dir=expr
+ unique int id: @opaque_value_expr
+);
+
+open_existential_exprs( //dir=expr
+ unique int id: @open_existential_expr,
+ int sub_expr: @expr_or_none ref,
+ int existential: @expr_or_none ref,
+ int opaque_expr: @opaque_value_expr_or_none ref
+);
+
+optional_evaluation_exprs( //dir=expr
+ unique int id: @optional_evaluation_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+other_initializer_ref_exprs( //dir=expr
+ unique int id: @other_initializer_ref_expr,
+ int initializer: @initializer_or_none ref
+);
+
+overloaded_decl_ref_exprs( //dir=expr
+ unique int id: @overloaded_decl_ref_expr
+);
+
+#keyset[id, index]
+overloaded_decl_ref_expr_possible_declarations( //dir=expr
+ int id: @overloaded_decl_ref_expr ref,
+ int index: int ref,
+ int possible_declaration: @value_decl_or_none ref
+);
+
+pack_element_exprs( //dir=expr
+ unique int id: @pack_element_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+pack_expansion_exprs( //dir=expr
+ unique int id: @pack_expansion_expr,
+ int pattern_expr: @expr_or_none ref
+);
+
+property_wrapper_value_placeholder_exprs( //dir=expr
+ unique int id: @property_wrapper_value_placeholder_expr,
+ int placeholder: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr
+ int id: @property_wrapper_value_placeholder_expr ref,
+ int wrapped_value: @expr_or_none ref
+);
+
+rebind_self_in_initializer_exprs( //dir=expr
+ unique int id: @rebind_self_in_initializer_expr,
+ int sub_expr: @expr_or_none ref,
+ int self: @var_decl_or_none ref
+);
+
+sequence_exprs( //dir=expr
+ unique int id: @sequence_expr
+);
+
+#keyset[id, index]
+sequence_expr_elements( //dir=expr
+ int id: @sequence_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+single_value_stmt_exprs( //dir=expr
+ unique int id: @single_value_stmt_expr,
+ int stmt: @stmt_or_none ref
+);
+
+super_ref_exprs( //dir=expr
+ unique int id: @super_ref_expr,
+ int self: @var_decl_or_none ref
+);
+
+tap_exprs( //dir=expr
+ unique int id: @tap_expr,
+ int body: @brace_stmt_or_none ref,
+ int var: @var_decl_or_none ref
+);
+
+#keyset[id]
+tap_expr_sub_exprs( //dir=expr
+ int id: @tap_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+tuple_element_exprs( //dir=expr
+ unique int id: @tuple_element_expr,
+ int sub_expr: @expr_or_none ref,
+ int index: int ref
+);
+
+tuple_exprs( //dir=expr
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_elements( //dir=expr
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+type_exprs( //dir=expr
+ unique int id: @type_expr
+);
+
+#keyset[id]
+type_expr_type_reprs( //dir=expr
+ int id: @type_expr ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+unresolved_decl_ref_exprs( //dir=expr
+ unique int id: @unresolved_decl_ref_expr
+);
+
+#keyset[id]
+unresolved_decl_ref_expr_names( //dir=expr
+ int id: @unresolved_decl_ref_expr ref,
+ string name: string ref
+);
+
+unresolved_dot_exprs( //dir=expr
+ unique int id: @unresolved_dot_expr,
+ int base: @expr_or_none ref,
+ string name: string ref
+);
+
+unresolved_member_exprs( //dir=expr
+ unique int id: @unresolved_member_expr,
+ string name: string ref
+);
+
+unresolved_pattern_exprs( //dir=expr
+ unique int id: @unresolved_pattern_expr,
+ int sub_pattern: @pattern_or_none ref
+);
+
+unresolved_specialize_exprs( //dir=expr
+ unique int id: @unresolved_specialize_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+vararg_expansion_exprs( //dir=expr
+ unique int id: @vararg_expansion_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+abi_safe_conversion_exprs( //dir=expr
+ unique int id: @abi_safe_conversion_expr
+);
+
+actor_isolation_erasure_exprs( //dir=expr
+ unique int id: @actor_isolation_erasure_expr
+);
+
+any_hashable_erasure_exprs( //dir=expr
+ unique int id: @any_hashable_erasure_expr
+);
+
+archetype_to_super_exprs( //dir=expr
+ unique int id: @archetype_to_super_expr
+);
+
+array_exprs( //dir=expr
+ unique int id: @array_expr
+);
+
+#keyset[id, index]
+array_expr_elements( //dir=expr
+ int id: @array_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+array_to_pointer_exprs( //dir=expr
+ unique int id: @array_to_pointer_expr
+);
+
+auto_closure_exprs( //dir=expr
+ unique int id: @auto_closure_expr
+);
+
+await_exprs( //dir=expr
+ unique int id: @await_expr
+);
+
+binary_exprs( //dir=expr
+ unique int id: @binary_expr
+);
+
+borrow_exprs( //dir=expr
+ unique int id: @borrow_expr
+);
+
+bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @bridge_from_obj_c_expr
+);
+
+bridge_to_obj_c_exprs( //dir=expr
+ unique int id: @bridge_to_obj_c_expr
+);
+
+@builtin_literal_expr =
+ @boolean_literal_expr
+| @magic_identifier_literal_expr
+| @number_literal_expr
+| @string_literal_expr
+;
+
+call_exprs( //dir=expr
+ unique int id: @call_expr
+);
+
+@checked_cast_expr =
+ @conditional_checked_cast_expr
+| @forced_checked_cast_expr
+| @is_expr
+;
+
+class_metatype_to_object_exprs( //dir=expr
+ unique int id: @class_metatype_to_object_expr
+);
+
+coerce_exprs( //dir=expr
+ unique int id: @coerce_expr
+);
+
+collection_upcast_conversion_exprs( //dir=expr
+ unique int id: @collection_upcast_conversion_expr
+);
+
+conditional_bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @conditional_bridge_from_obj_c_expr
+);
+
+covariant_function_conversion_exprs( //dir=expr
+ unique int id: @covariant_function_conversion_expr
+);
+
+covariant_return_conversion_exprs( //dir=expr
+ unique int id: @covariant_return_conversion_expr
+);
+
+derived_to_base_exprs( //dir=expr
+ unique int id: @derived_to_base_expr
+);
+
+destructure_tuple_exprs( //dir=expr
+ unique int id: @destructure_tuple_expr
+);
+
+dictionary_exprs( //dir=expr
+ unique int id: @dictionary_expr
+);
+
+#keyset[id, index]
+dictionary_expr_elements( //dir=expr
+ int id: @dictionary_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+differentiable_function_exprs( //dir=expr
+ unique int id: @differentiable_function_expr
+);
+
+differentiable_function_extract_original_exprs( //dir=expr
+ unique int id: @differentiable_function_extract_original_expr
+);
+
+dot_self_exprs( //dir=expr
+ unique int id: @dot_self_expr
+);
+
+@dynamic_lookup_expr =
+ @dynamic_member_ref_expr
+| @dynamic_subscript_expr
+;
+
+erasure_exprs( //dir=expr
+ unique int id: @erasure_expr
+);
+
+existential_metatype_to_object_exprs( //dir=expr
+ unique int id: @existential_metatype_to_object_expr
+);
+
+explicit_closure_exprs( //dir=expr
+ unique int id: @explicit_closure_expr
+);
+
+force_try_exprs( //dir=expr
+ unique int id: @force_try_expr
+);
+
+foreign_object_conversion_exprs( //dir=expr
+ unique int id: @foreign_object_conversion_expr
+);
+
+function_conversion_exprs( //dir=expr
+ unique int id: @function_conversion_expr
+);
+
+in_out_to_pointer_exprs( //dir=expr
+ unique int id: @in_out_to_pointer_expr
+);
+
+inject_into_optional_exprs( //dir=expr
+ unique int id: @inject_into_optional_expr
+);
+
+interpolated_string_literal_exprs( //dir=expr
+ unique int id: @interpolated_string_literal_expr
+);
+
+#keyset[id]
+interpolated_string_literal_expr_interpolation_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int interpolation_expr: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+interpolated_string_literal_expr_appending_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int appending_expr: @tap_expr_or_none ref
+);
+
+linear_function_exprs( //dir=expr
+ unique int id: @linear_function_expr
+);
+
+linear_function_extract_original_exprs( //dir=expr
+ unique int id: @linear_function_extract_original_expr
+);
+
+linear_to_differentiable_function_exprs( //dir=expr
+ unique int id: @linear_to_differentiable_function_expr
+);
+
+load_exprs( //dir=expr
+ unique int id: @load_expr
+);
+
+member_ref_exprs( //dir=expr
+ unique int id: @member_ref_expr
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+metatype_conversion_exprs( //dir=expr
+ unique int id: @metatype_conversion_expr
+);
+
+nil_literal_exprs( //dir=expr
+ unique int id: @nil_literal_expr
+);
+
+object_literal_exprs( //dir=expr
+ unique int id: @object_literal_expr,
+ int kind: int ref
+);
+
+#keyset[id, index]
+object_literal_expr_arguments( //dir=expr
+ int id: @object_literal_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+optional_try_exprs( //dir=expr
+ unique int id: @optional_try_expr
+);
+
+paren_exprs( //dir=expr
+ unique int id: @paren_expr
+);
+
+pointer_to_pointer_exprs( //dir=expr
+ unique int id: @pointer_to_pointer_expr
+);
+
+postfix_unary_exprs( //dir=expr
+ unique int id: @postfix_unary_expr
+);
+
+prefix_unary_exprs( //dir=expr
+ unique int id: @prefix_unary_expr
+);
+
+protocol_metatype_to_object_exprs( //dir=expr
+ unique int id: @protocol_metatype_to_object_expr
+);
+
+regex_literal_exprs( //dir=expr
+ unique int id: @regex_literal_expr,
+ string pattern: string ref,
+ int version: int ref
+);
+
+@self_apply_expr =
+ @dot_syntax_call_expr
+| @initializer_ref_call_expr
+;
+
+#keyset[id]
+self_apply_exprs( //dir=expr
+ int id: @self_apply_expr ref,
+ int base: @expr_or_none ref
+);
+
+string_to_pointer_exprs( //dir=expr
+ unique int id: @string_to_pointer_expr
+);
+
+subscript_exprs( //dir=expr
+ unique int id: @subscript_expr
+);
+
+#keyset[id, index]
+subscript_expr_arguments( //dir=expr
+ int id: @subscript_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_ordinary_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+try_exprs( //dir=expr
+ unique int id: @try_expr
+);
+
+underlying_to_opaque_exprs( //dir=expr
+ unique int id: @underlying_to_opaque_expr
+);
+
+unevaluated_instance_exprs( //dir=expr
+ unique int id: @unevaluated_instance_expr
+);
+
+unreachable_exprs( //dir=expr
+ unique int id: @unreachable_expr
+);
+
+unresolved_member_chain_result_exprs( //dir=expr
+ unique int id: @unresolved_member_chain_result_expr
+);
+
+unresolved_type_conversion_exprs( //dir=expr
+ unique int id: @unresolved_type_conversion_expr
+);
+
+boolean_literal_exprs( //dir=expr
+ unique int id: @boolean_literal_expr,
+ boolean value: boolean ref
+);
+
+conditional_checked_cast_exprs( //dir=expr
+ unique int id: @conditional_checked_cast_expr
+);
+
+dot_syntax_call_exprs( //dir=expr
+ unique int id: @dot_syntax_call_expr
+);
+
+dynamic_member_ref_exprs( //dir=expr
+ unique int id: @dynamic_member_ref_expr
+);
+
+dynamic_subscript_exprs( //dir=expr
+ unique int id: @dynamic_subscript_expr
+);
+
+forced_checked_cast_exprs( //dir=expr
+ unique int id: @forced_checked_cast_expr
+);
+
+initializer_ref_call_exprs( //dir=expr
+ unique int id: @initializer_ref_call_expr
+);
+
+is_exprs( //dir=expr
+ unique int id: @is_expr
+);
+
+magic_identifier_literal_exprs( //dir=expr
+ unique int id: @magic_identifier_literal_expr,
+ string kind: string ref
+);
+
+@number_literal_expr =
+ @float_literal_expr
+| @integer_literal_expr
+;
+
+string_literal_exprs( //dir=expr
+ unique int id: @string_literal_expr,
+ string value: string ref
+);
+
+float_literal_exprs( //dir=expr
+ unique int id: @float_literal_expr,
+ string string_value: string ref
+);
+
+integer_literal_exprs( //dir=expr
+ unique int id: @integer_literal_expr,
+ string string_value: string ref
+);
+
+@pattern =
+ @any_pattern
+| @binding_pattern
+| @bool_pattern
+| @enum_element_pattern
+| @expr_pattern
+| @is_pattern
+| @named_pattern
+| @optional_some_pattern
+| @paren_pattern
+| @tuple_pattern
+| @typed_pattern
+;
+
+#keyset[id]
+pattern_types( //dir=pattern
+ int id: @pattern ref,
+ int type_: @type_or_none ref
+);
+
+any_patterns( //dir=pattern
+ unique int id: @any_pattern
+);
+
+binding_patterns( //dir=pattern
+ unique int id: @binding_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+bool_patterns( //dir=pattern
+ unique int id: @bool_pattern,
+ boolean value: boolean ref
+);
+
+enum_element_patterns( //dir=pattern
+ unique int id: @enum_element_pattern,
+ int element: @enum_element_decl_or_none ref
+);
+
+#keyset[id]
+enum_element_pattern_sub_patterns( //dir=pattern
+ int id: @enum_element_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+expr_patterns( //dir=pattern
+ unique int id: @expr_pattern,
+ int sub_expr: @expr_or_none ref
+);
+
+is_patterns( //dir=pattern
+ unique int id: @is_pattern
+);
+
+#keyset[id]
+is_pattern_cast_type_reprs( //dir=pattern
+ int id: @is_pattern ref,
+ int cast_type_repr: @type_repr_or_none ref
+);
+
+#keyset[id]
+is_pattern_sub_patterns( //dir=pattern
+ int id: @is_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+named_patterns( //dir=pattern
+ unique int id: @named_pattern,
+ int var_decl: @var_decl_or_none ref
+);
+
+optional_some_patterns( //dir=pattern
+ unique int id: @optional_some_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+paren_patterns( //dir=pattern
+ unique int id: @paren_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+tuple_patterns( //dir=pattern
+ unique int id: @tuple_pattern
+);
+
+#keyset[id, index]
+tuple_pattern_elements( //dir=pattern
+ int id: @tuple_pattern ref,
+ int index: int ref,
+ int element: @pattern_or_none ref
+);
+
+typed_patterns( //dir=pattern
+ unique int id: @typed_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+typed_pattern_type_reprs( //dir=pattern
+ int id: @typed_pattern ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+case_label_items( //dir=stmt
+ unique int id: @case_label_item,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+case_label_item_guards( //dir=stmt
+ int id: @case_label_item ref,
+ int guard: @expr_or_none ref
+);
+
+condition_elements( //dir=stmt
+ unique int id: @condition_element
+);
+
+#keyset[id]
+condition_element_booleans( //dir=stmt
+ int id: @condition_element ref,
+ int boolean_: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_patterns( //dir=stmt
+ int id: @condition_element ref,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+condition_element_initializers( //dir=stmt
+ int id: @condition_element ref,
+ int initializer: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_availabilities( //dir=stmt
+ int id: @condition_element ref,
+ int availability: @availability_info_or_none ref
+);
+
+@stmt =
+ @brace_stmt
+| @break_stmt
+| @case_stmt
+| @continue_stmt
+| @defer_stmt
+| @discard_stmt
+| @fail_stmt
+| @fallthrough_stmt
+| @labeled_stmt
+| @pound_assert_stmt
+| @return_stmt
+| @then_stmt
+| @throw_stmt
+| @yield_stmt
+;
+
+stmt_conditions( //dir=stmt
+ unique int id: @stmt_condition
+);
+
+#keyset[id, index]
+stmt_condition_elements( //dir=stmt
+ int id: @stmt_condition ref,
+ int index: int ref,
+ int element: @condition_element_or_none ref
+);
+
+brace_stmts( //dir=stmt
+ unique int id: @brace_stmt
+);
+
+#keyset[id, index]
+brace_stmt_elements( //dir=stmt
+ int id: @brace_stmt ref,
+ int index: int ref,
+ int element: @ast_node_or_none ref
+);
+
+break_stmts( //dir=stmt
+ unique int id: @break_stmt
+);
+
+#keyset[id]
+break_stmt_target_names( //dir=stmt
+ int id: @break_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+break_stmt_targets( //dir=stmt
+ int id: @break_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+case_stmts( //dir=stmt
+ unique int id: @case_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_labels( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int label: @case_label_item_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_variables( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+continue_stmts( //dir=stmt
+ unique int id: @continue_stmt
+);
+
+#keyset[id]
+continue_stmt_target_names( //dir=stmt
+ int id: @continue_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+continue_stmt_targets( //dir=stmt
+ int id: @continue_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+defer_stmts( //dir=stmt
+ unique int id: @defer_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+discard_stmts( //dir=stmt
+ unique int id: @discard_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+fail_stmts( //dir=stmt
+ unique int id: @fail_stmt
+);
+
+fallthrough_stmts( //dir=stmt
+ unique int id: @fallthrough_stmt,
+ int fallthrough_source: @case_stmt_or_none ref,
+ int fallthrough_dest: @case_stmt_or_none ref
+);
+
+@labeled_stmt =
+ @do_catch_stmt
+| @do_stmt
+| @for_each_stmt
+| @labeled_conditional_stmt
+| @repeat_while_stmt
+| @switch_stmt
+;
+
+#keyset[id]
+labeled_stmt_labels( //dir=stmt
+ int id: @labeled_stmt ref,
+ string label: string ref
+);
+
+pound_assert_stmts( //dir=stmt
+ unique int id: @pound_assert_stmt,
+ int condition: @expr_or_none ref,
+ string message: string ref
+);
+
+return_stmts( //dir=stmt
+ unique int id: @return_stmt
+);
+
+#keyset[id]
+return_stmt_results( //dir=stmt
+ int id: @return_stmt ref,
+ int result: @expr_or_none ref
+);
+
+then_stmts( //dir=stmt
+ unique int id: @then_stmt,
+ int result: @expr_or_none ref
+);
+
+throw_stmts( //dir=stmt
+ unique int id: @throw_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+yield_stmts( //dir=stmt
+ unique int id: @yield_stmt
+);
+
+#keyset[id, index]
+yield_stmt_results( //dir=stmt
+ int id: @yield_stmt ref,
+ int index: int ref,
+ int result: @expr_or_none ref
+);
+
+do_catch_stmts( //dir=stmt
+ unique int id: @do_catch_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+do_catch_stmt_catches( //dir=stmt
+ int id: @do_catch_stmt ref,
+ int index: int ref,
+ int catch: @case_stmt_or_none ref
+);
+
+do_stmts( //dir=stmt
+ unique int id: @do_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+for_each_stmts( //dir=stmt
+ unique int id: @for_each_stmt,
+ int pattern: @pattern_or_none ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+for_each_stmt_variables( //dir=stmt
+ int id: @for_each_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_wheres( //dir=stmt
+ int id: @for_each_stmt ref,
+ int where: @expr_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_iterator_vars( //dir=stmt
+ int id: @for_each_stmt ref,
+ int iteratorVar: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_next_calls( //dir=stmt
+ int id: @for_each_stmt ref,
+ int nextCall: @expr_or_none ref
+);
+
+@labeled_conditional_stmt =
+ @guard_stmt
+| @if_stmt
+| @while_stmt
+;
+
+#keyset[id]
+labeled_conditional_stmts( //dir=stmt
+ int id: @labeled_conditional_stmt ref,
+ int condition: @stmt_condition_or_none ref
+);
+
+repeat_while_stmts( //dir=stmt
+ unique int id: @repeat_while_stmt,
+ int condition: @expr_or_none ref,
+ int body: @stmt_or_none ref
+);
+
+switch_stmts( //dir=stmt
+ unique int id: @switch_stmt,
+ int expr: @expr_or_none ref
+);
+
+#keyset[id, index]
+switch_stmt_cases( //dir=stmt
+ int id: @switch_stmt ref,
+ int index: int ref,
+ int case_: @case_stmt_or_none ref
+);
+
+guard_stmts( //dir=stmt
+ unique int id: @guard_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+if_stmts( //dir=stmt
+ unique int id: @if_stmt,
+ int then: @stmt_or_none ref
+);
+
+#keyset[id]
+if_stmt_elses( //dir=stmt
+ int id: @if_stmt ref,
+ int else: @stmt_or_none ref
+);
+
+while_stmts( //dir=stmt
+ unique int id: @while_stmt,
+ int body: @stmt_or_none ref
+);
+
+@type =
+ @any_function_type
+| @any_generic_type
+| @any_metatype_type
+| @builtin_type
+| @dependent_member_type
+| @dynamic_self_type
+| @error_type
+| @existential_type
+| @in_out_type
+| @l_value_type
+| @module_type
+| @pack_element_type
+| @pack_expansion_type
+| @pack_type
+| @parameterized_protocol_type
+| @protocol_composition_type
+| @reference_storage_type
+| @substitutable_type
+| @sugar_type
+| @tuple_type
+| @unresolved_type
+;
+
+#keyset[id]
+types( //dir=type
+ int id: @type ref,
+ string name: string ref,
+ int canonical_type: @type_or_none ref
+);
+
+type_reprs( //dir=type
+ unique int id: @type_repr,
+ int type_: @type_or_none ref
+);
+
+@any_function_type =
+ @function_type
+| @generic_function_type
+;
+
+#keyset[id]
+any_function_types( //dir=type
+ int id: @any_function_type ref,
+ int result: @type_or_none ref
+);
+
+#keyset[id, index]
+any_function_type_param_types( //dir=type
+ int id: @any_function_type ref,
+ int index: int ref,
+ int param_type: @type_or_none ref
+);
+
+#keyset[id]
+any_function_type_is_throwing( //dir=type
+ int id: @any_function_type ref
+);
+
+#keyset[id]
+any_function_type_is_async( //dir=type
+ int id: @any_function_type ref
+);
+
+@any_generic_type =
+ @nominal_or_bound_generic_nominal_type
+| @unbound_generic_type
+;
+
+#keyset[id]
+any_generic_types( //dir=type
+ int id: @any_generic_type ref,
+ int declaration: @generic_type_decl_or_none ref
+);
+
+#keyset[id]
+any_generic_type_parents( //dir=type
+ int id: @any_generic_type ref,
+ int parent: @type_or_none ref
+);
+
+@any_metatype_type =
+ @existential_metatype_type
+| @metatype_type
+;
+
+@builtin_type =
+ @any_builtin_integer_type
+| @builtin_bridge_object_type
+| @builtin_default_actor_storage_type
+| @builtin_executor_type
+| @builtin_float_type
+| @builtin_job_type
+| @builtin_native_object_type
+| @builtin_raw_pointer_type
+| @builtin_raw_unsafe_continuation_type
+| @builtin_unsafe_value_buffer_type
+| @builtin_vector_type
+;
+
+dependent_member_types( //dir=type
+ unique int id: @dependent_member_type,
+ int base_type: @type_or_none ref,
+ int associated_type_decl: @associated_type_decl_or_none ref
+);
+
+dynamic_self_types( //dir=type
+ unique int id: @dynamic_self_type,
+ int static_self_type: @type_or_none ref
+);
+
+error_types( //dir=type
+ unique int id: @error_type
+);
+
+existential_types( //dir=type
+ unique int id: @existential_type,
+ int constraint: @type_or_none ref
+);
+
+in_out_types( //dir=type
+ unique int id: @in_out_type,
+ int object_type: @type_or_none ref
+);
+
+l_value_types( //dir=type
+ unique int id: @l_value_type,
+ int object_type: @type_or_none ref
+);
+
+module_types( //dir=type
+ unique int id: @module_type,
+ int module: @module_decl_or_none ref
+);
+
+pack_element_types( //dir=type
+ unique int id: @pack_element_type,
+ int pack_type: @type_or_none ref
+);
+
+pack_expansion_types( //dir=type
+ unique int id: @pack_expansion_type,
+ int pattern_type: @type_or_none ref,
+ int count_type: @type_or_none ref
+);
+
+pack_types( //dir=type
+ unique int id: @pack_type
+);
+
+#keyset[id, index]
+pack_type_elements( //dir=type
+ int id: @pack_type ref,
+ int index: int ref,
+ int element: @type_or_none ref
+);
+
+parameterized_protocol_types( //dir=type
+ unique int id: @parameterized_protocol_type,
+ int base: @protocol_type_or_none ref
+);
+
+#keyset[id, index]
+parameterized_protocol_type_args( //dir=type
+ int id: @parameterized_protocol_type ref,
+ int index: int ref,
+ int arg: @type_or_none ref
+);
+
+protocol_composition_types( //dir=type
+ unique int id: @protocol_composition_type
+);
+
+#keyset[id, index]
+protocol_composition_type_members( //dir=type
+ int id: @protocol_composition_type ref,
+ int index: int ref,
+ int member: @type_or_none ref
+);
+
+@reference_storage_type =
+ @unmanaged_storage_type
+| @unowned_storage_type
+| @weak_storage_type
+;
+
+#keyset[id]
+reference_storage_types( //dir=type
+ int id: @reference_storage_type ref,
+ int referent_type: @type_or_none ref
+);
+
+@substitutable_type =
+ @archetype_type
+| @generic_type_param_type
+;
+
+@sugar_type =
+ @paren_type
+| @syntax_sugar_type
+| @type_alias_type
+;
+
+tuple_types( //dir=type
+ unique int id: @tuple_type
+);
+
+#keyset[id, index]
+tuple_type_types( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id, index]
+tuple_type_names( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unresolved_types( //dir=type
+ unique int id: @unresolved_type
+);
+
+@any_builtin_integer_type =
+ @builtin_integer_literal_type
+| @builtin_integer_type
+;
+
+@archetype_type =
+ @local_archetype_type
+| @opaque_type_archetype_type
+| @pack_archetype_type
+| @primary_archetype_type
+;
+
+#keyset[id]
+archetype_types( //dir=type
+ int id: @archetype_type ref,
+ int interface_type: @type_or_none ref
+);
+
+#keyset[id]
+archetype_type_superclasses( //dir=type
+ int id: @archetype_type ref,
+ int superclass: @type_or_none ref
+);
+
+#keyset[id, index]
+archetype_type_protocols( //dir=type
+ int id: @archetype_type ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+builtin_bridge_object_types( //dir=type
+ unique int id: @builtin_bridge_object_type
+);
+
+builtin_default_actor_storage_types( //dir=type
+ unique int id: @builtin_default_actor_storage_type
+);
+
+builtin_executor_types( //dir=type
+ unique int id: @builtin_executor_type
+);
+
+builtin_float_types( //dir=type
+ unique int id: @builtin_float_type
+);
+
+builtin_job_types( //dir=type
+ unique int id: @builtin_job_type
+);
+
+builtin_native_object_types( //dir=type
+ unique int id: @builtin_native_object_type
+);
+
+builtin_raw_pointer_types( //dir=type
+ unique int id: @builtin_raw_pointer_type
+);
+
+builtin_raw_unsafe_continuation_types( //dir=type
+ unique int id: @builtin_raw_unsafe_continuation_type
+);
+
+builtin_unsafe_value_buffer_types( //dir=type
+ unique int id: @builtin_unsafe_value_buffer_type
+);
+
+builtin_vector_types( //dir=type
+ unique int id: @builtin_vector_type
+);
+
+existential_metatype_types( //dir=type
+ unique int id: @existential_metatype_type
+);
+
+function_types( //dir=type
+ unique int id: @function_type
+);
+
+generic_function_types( //dir=type
+ unique int id: @generic_function_type
+);
+
+#keyset[id, index]
+generic_function_type_generic_params( //dir=type
+ int id: @generic_function_type ref,
+ int index: int ref,
+ int generic_param: @generic_type_param_type_or_none ref
+);
+
+generic_type_param_types( //dir=type
+ unique int id: @generic_type_param_type
+);
+
+metatype_types( //dir=type
+ unique int id: @metatype_type
+);
+
+@nominal_or_bound_generic_nominal_type =
+ @bound_generic_type
+| @nominal_type
+;
+
+paren_types( //dir=type
+ unique int id: @paren_type,
+ int type_: @type_or_none ref
+);
+
+@syntax_sugar_type =
+ @dictionary_type
+| @unary_syntax_sugar_type
+;
+
+type_alias_types( //dir=type
+ unique int id: @type_alias_type,
+ int decl: @type_alias_decl_or_none ref
+);
+
+unbound_generic_types( //dir=type
+ unique int id: @unbound_generic_type
+);
+
+unmanaged_storage_types( //dir=type
+ unique int id: @unmanaged_storage_type
+);
+
+unowned_storage_types( //dir=type
+ unique int id: @unowned_storage_type
+);
+
+weak_storage_types( //dir=type
+ unique int id: @weak_storage_type
+);
+
+@bound_generic_type =
+ @bound_generic_class_type
+| @bound_generic_enum_type
+| @bound_generic_struct_type
+;
+
+#keyset[id, index]
+bound_generic_type_arg_types( //dir=type
+ int id: @bound_generic_type ref,
+ int index: int ref,
+ int arg_type: @type_or_none ref
+);
+
+builtin_integer_literal_types( //dir=type
+ unique int id: @builtin_integer_literal_type
+);
+
+builtin_integer_types( //dir=type
+ unique int id: @builtin_integer_type
+);
+
+#keyset[id]
+builtin_integer_type_widths( //dir=type
+ int id: @builtin_integer_type ref,
+ int width: int ref
+);
+
+dictionary_types( //dir=type
+ unique int id: @dictionary_type,
+ int key_type: @type_or_none ref,
+ int value_type: @type_or_none ref
+);
+
+@local_archetype_type =
+ @element_archetype_type
+| @opened_archetype_type
+;
+
+@nominal_type =
+ @class_type
+| @enum_type
+| @protocol_type
+| @struct_type
+;
+
+opaque_type_archetype_types( //dir=type
+ unique int id: @opaque_type_archetype_type,
+ int declaration: @opaque_type_decl_or_none ref
+);
+
+pack_archetype_types( //dir=type
+ unique int id: @pack_archetype_type
+);
+
+primary_archetype_types( //dir=type
+ unique int id: @primary_archetype_type
+);
+
+@unary_syntax_sugar_type =
+ @array_slice_type
+| @optional_type
+| @variadic_sequence_type
+;
+
+#keyset[id]
+unary_syntax_sugar_types( //dir=type
+ int id: @unary_syntax_sugar_type ref,
+ int base_type: @type_or_none ref
+);
+
+array_slice_types( //dir=type
+ unique int id: @array_slice_type
+);
+
+bound_generic_class_types( //dir=type
+ unique int id: @bound_generic_class_type
+);
+
+bound_generic_enum_types( //dir=type
+ unique int id: @bound_generic_enum_type
+);
+
+bound_generic_struct_types( //dir=type
+ unique int id: @bound_generic_struct_type
+);
+
+class_types( //dir=type
+ unique int id: @class_type
+);
+
+element_archetype_types( //dir=type
+ unique int id: @element_archetype_type
+);
+
+enum_types( //dir=type
+ unique int id: @enum_type
+);
+
+opened_archetype_types( //dir=type
+ unique int id: @opened_archetype_type
+);
+
+optional_types( //dir=type
+ unique int id: @optional_type
+);
+
+protocol_types( //dir=type
+ unique int id: @protocol_type
+);
+
+struct_types( //dir=type
+ unique int id: @struct_type
+);
+
+variadic_sequence_types( //dir=type
+ unique int id: @variadic_sequence_type
+);
+
+@accessor_or_none =
+ @accessor
+| @unspecified_element
+;
+
+@argument_or_none =
+ @argument
+| @unspecified_element
+;
+
+@associated_type_decl_or_none =
+ @associated_type_decl
+| @unspecified_element
+;
+
+@ast_node_or_none =
+ @ast_node
+| @unspecified_element
+;
+
+@availability_info_or_none =
+ @availability_info
+| @unspecified_element
+;
+
+@availability_spec_or_none =
+ @availability_spec
+| @unspecified_element
+;
+
+@brace_stmt_or_none =
+ @brace_stmt
+| @unspecified_element
+;
+
+@captured_decl_or_none =
+ @captured_decl
+| @unspecified_element
+;
+
+@case_label_item_or_none =
+ @case_label_item
+| @unspecified_element
+;
+
+@case_stmt_or_none =
+ @case_stmt
+| @unspecified_element
+;
+
+@closure_expr_or_none =
+ @closure_expr
+| @unspecified_element
+;
+
+@condition_element_or_none =
+ @condition_element
+| @unspecified_element
+;
+
+@decl_or_none =
+ @decl
+| @unspecified_element
+;
+
+@enum_element_decl_or_none =
+ @enum_element_decl
+| @unspecified_element
+;
+
+@expr_or_none =
+ @expr
+| @unspecified_element
+;
+
+@file_or_none =
+ @file
+| @unspecified_element
+;
+
+@function_or_none =
+ @function
+| @unspecified_element
+;
+
+@generic_type_decl_or_none =
+ @generic_type_decl
+| @unspecified_element
+;
+
+@generic_type_param_decl_or_none =
+ @generic_type_param_decl
+| @unspecified_element
+;
+
+@generic_type_param_type_or_none =
+ @generic_type_param_type
+| @unspecified_element
+;
+
+@initializer_or_none =
+ @initializer
+| @unspecified_element
+;
+
+@key_path_component_or_none =
+ @key_path_component
+| @unspecified_element
+;
+
+@location_or_none =
+ @location
+| @unspecified_element
+;
+
+@macro_role_or_none =
+ @macro_role
+| @unspecified_element
+;
+
+@module_decl_or_none =
+ @module_decl
+| @unspecified_element
+;
+
+@nominal_type_decl_or_none =
+ @nominal_type_decl
+| @unspecified_element
+;
+
+@opaque_type_decl_or_none =
+ @opaque_type_decl
+| @unspecified_element
+;
+
+@opaque_value_expr_or_none =
+ @opaque_value_expr
+| @unspecified_element
+;
+
+@param_decl_or_none =
+ @param_decl
+| @unspecified_element
+;
+
+@pattern_or_none =
+ @pattern
+| @unspecified_element
+;
+
+@pattern_binding_decl_or_none =
+ @pattern_binding_decl
+| @unspecified_element
+;
+
+@precedence_group_decl_or_none =
+ @precedence_group_decl
+| @unspecified_element
+;
+
+@protocol_decl_or_none =
+ @protocol_decl
+| @unspecified_element
+;
+
+@protocol_type_or_none =
+ @protocol_type
+| @unspecified_element
+;
+
+@stmt_or_none =
+ @stmt
+| @unspecified_element
+;
+
+@stmt_condition_or_none =
+ @stmt_condition
+| @unspecified_element
+;
+
+@string_literal_expr_or_none =
+ @string_literal_expr
+| @unspecified_element
+;
+
+@tap_expr_or_none =
+ @tap_expr
+| @unspecified_element
+;
+
+@type_or_none =
+ @type
+| @unspecified_element
+;
+
+@type_alias_decl_or_none =
+ @type_alias_decl
+| @unspecified_element
+;
+
+@type_expr_or_none =
+ @type_expr
+| @unspecified_element
+;
+
+@type_repr_or_none =
+ @type_repr
+| @unspecified_element
+;
+
+@value_decl_or_none =
+ @unspecified_element
+| @value_decl
+;
+
+@var_decl_or_none =
+ @unspecified_element
+| @var_decl
+;
diff --git a/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/swift.dbscheme b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/swift.dbscheme
new file mode 100644
index 00000000000..33db81ad4b6
--- /dev/null
+++ b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/swift.dbscheme
@@ -0,0 +1,2793 @@
+// generated by codegen/codegen.py, do not edit
+
+// from prefix.dbscheme
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(
+ string prefix: string ref
+);
+
+
+// from schema.py
+
+@element =
+ @file
+| @generic_context
+| @locatable
+| @location
+| @type
+;
+
+#keyset[id]
+element_is_unknown(
+ int id: @element ref
+);
+
+@file =
+ @db_file
+;
+
+#keyset[id]
+files(
+ int id: @file ref,
+ string name: string ref
+);
+
+#keyset[id]
+file_is_successfully_extracted(
+ int id: @file ref
+);
+
+@locatable =
+ @argument
+| @ast_node
+| @comment
+| @diagnostics
+| @error_element
+;
+
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_or_none ref
+);
+
+@location =
+ @db_location
+;
+
+#keyset[id]
+locations(
+ int id: @location ref,
+ int file: @file_or_none ref,
+ int start_line: int ref,
+ int start_column: int ref,
+ int end_line: int ref,
+ int end_column: int ref
+);
+
+@ast_node =
+ @availability_info
+| @availability_spec
+| @callable
+| @case_label_item
+| @condition_element
+| @decl
+| @expr
+| @key_path_component
+| @macro_role
+| @pattern
+| @stmt
+| @stmt_condition
+| @type_repr
+;
+
+comments(
+ unique int id: @comment,
+ string text: string ref
+);
+
+db_files(
+ unique int id: @db_file
+);
+
+db_locations(
+ unique int id: @db_location
+);
+
+diagnostics(
+ unique int id: @diagnostics,
+ string text: string ref,
+ int kind: int ref
+);
+
+@error_element =
+ @error_expr
+| @error_type
+| @overloaded_decl_ref_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_chain_result_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @unresolved_type
+| @unresolved_type_conversion_expr
+| @unspecified_element
+;
+
+availability_infos(
+ unique int id: @availability_info
+);
+
+#keyset[id]
+availability_info_is_unavailable(
+ int id: @availability_info ref
+);
+
+#keyset[id, index]
+availability_info_specs(
+ int id: @availability_info ref,
+ int index: int ref,
+ int spec: @availability_spec_or_none ref
+);
+
+@availability_spec =
+ @other_availability_spec
+| @platform_version_availability_spec
+;
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_names(
+ int id: @callable ref,
+ string name: string ref
+);
+
+#keyset[id]
+callable_self_params(
+ int id: @callable ref,
+ int self_param: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+callable_params(
+ int id: @callable ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+#keyset[id]
+callable_bodies(
+ int id: @callable ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+callable_captures(
+ int id: @callable ref,
+ int index: int ref,
+ int capture: @captured_decl_or_none ref
+);
+
+key_path_components(
+ unique int id: @key_path_component,
+ int kind: int ref,
+ int component_type: @type_or_none ref
+);
+
+#keyset[id, index]
+key_path_component_subscript_arguments(
+ int id: @key_path_component ref,
+ int index: int ref,
+ int subscript_argument: @argument_or_none ref
+);
+
+#keyset[id]
+key_path_component_tuple_indices(
+ int id: @key_path_component ref,
+ int tuple_index: int ref
+);
+
+#keyset[id]
+key_path_component_decl_refs(
+ int id: @key_path_component ref,
+ int decl_ref: @value_decl_or_none ref
+);
+
+macro_roles(
+ unique int id: @macro_role,
+ int kind: int ref,
+ int macro_syntax: int ref
+);
+
+#keyset[id, index]
+macro_role_conformances(
+ int id: @macro_role ref,
+ int index: int ref,
+ int conformance: @type_expr_or_none ref
+);
+
+#keyset[id, index]
+macro_role_names(
+ int id: @macro_role ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unspecified_elements(
+ unique int id: @unspecified_element,
+ string property: string ref,
+ string error: string ref
+);
+
+#keyset[id]
+unspecified_element_parents(
+ int id: @unspecified_element ref,
+ int parent: @element ref
+);
+
+#keyset[id]
+unspecified_element_indices(
+ int id: @unspecified_element ref,
+ int index: int ref
+);
+
+#keyset[id, index]
+unspecified_element_children(
+ int id: @unspecified_element ref,
+ int index: int ref,
+ int child: @ast_node_or_none ref
+);
+
+other_availability_specs(
+ unique int id: @other_availability_spec
+);
+
+platform_version_availability_specs(
+ unique int id: @platform_version_availability_spec,
+ string platform: string ref,
+ string version: string ref
+);
+
+@decl =
+ @captured_decl
+| @enum_case_decl
+| @extension_decl
+| @if_config_decl
+| @import_decl
+| @missing_member_decl
+| @operator_decl
+| @pattern_binding_decl
+| @pound_diagnostic_decl
+| @precedence_group_decl
+| @top_level_code_decl
+| @value_decl
+;
+
+#keyset[id]
+decls( //dir=decl
+ int id: @decl ref,
+ int module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+decl_members( //dir=decl
+ int id: @decl ref,
+ int index: int ref,
+ int member: @decl_or_none ref
+);
+
+@generic_context =
+ @extension_decl
+| @function
+| @generic_type_decl
+| @macro_decl
+| @subscript_decl
+;
+
+#keyset[id, index]
+generic_context_generic_type_params( //dir=decl
+ int id: @generic_context ref,
+ int index: int ref,
+ int generic_type_param: @generic_type_param_decl_or_none ref
+);
+
+captured_decls( //dir=decl
+ unique int id: @captured_decl,
+ int decl: @value_decl_or_none ref
+);
+
+#keyset[id]
+captured_decl_is_direct( //dir=decl
+ int id: @captured_decl ref
+);
+
+#keyset[id]
+captured_decl_is_escaping( //dir=decl
+ int id: @captured_decl ref
+);
+
+enum_case_decls( //dir=decl
+ unique int id: @enum_case_decl
+);
+
+#keyset[id, index]
+enum_case_decl_elements( //dir=decl
+ int id: @enum_case_decl ref,
+ int index: int ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+extension_decls( //dir=decl
+ unique int id: @extension_decl,
+ int extended_type_decl: @nominal_type_decl_or_none ref
+);
+
+#keyset[id, index]
+extension_decl_protocols( //dir=decl
+ int id: @extension_decl ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+if_config_decls( //dir=decl
+ unique int id: @if_config_decl
+);
+
+#keyset[id, index]
+if_config_decl_active_elements( //dir=decl
+ int id: @if_config_decl ref,
+ int index: int ref,
+ int active_element: @ast_node_or_none ref
+);
+
+import_decls( //dir=decl
+ unique int id: @import_decl
+);
+
+#keyset[id]
+import_decl_is_exported( //dir=decl
+ int id: @import_decl ref
+);
+
+#keyset[id]
+import_decl_imported_modules( //dir=decl
+ int id: @import_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+import_decl_declarations( //dir=decl
+ int id: @import_decl ref,
+ int index: int ref,
+ int declaration: @value_decl_or_none ref
+);
+
+missing_member_decls( //dir=decl
+ unique int id: @missing_member_decl,
+ string name: string ref
+);
+
+@operator_decl =
+ @infix_operator_decl
+| @postfix_operator_decl
+| @prefix_operator_decl
+;
+
+#keyset[id]
+operator_decls( //dir=decl
+ int id: @operator_decl ref,
+ string name: string ref
+);
+
+pattern_binding_decls( //dir=decl
+ unique int id: @pattern_binding_decl
+);
+
+#keyset[id, index]
+pattern_binding_decl_inits( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int init: @expr_or_none ref
+);
+
+#keyset[id, index]
+pattern_binding_decl_patterns( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int pattern: @pattern_or_none ref
+);
+
+pound_diagnostic_decls( //dir=decl
+ unique int id: @pound_diagnostic_decl,
+ int kind: int ref,
+ int message: @string_literal_expr_or_none ref
+);
+
+precedence_group_decls( //dir=decl
+ unique int id: @precedence_group_decl
+);
+
+top_level_code_decls( //dir=decl
+ unique int id: @top_level_code_decl,
+ int body: @brace_stmt_or_none ref
+);
+
+@value_decl =
+ @abstract_storage_decl
+| @enum_element_decl
+| @function
+| @macro_decl
+| @type_decl
+;
+
+#keyset[id]
+value_decls( //dir=decl
+ int id: @value_decl ref,
+ int interface_type: @type_or_none ref
+);
+
+@abstract_storage_decl =
+ @subscript_decl
+| @var_decl
+;
+
+#keyset[id, index]
+abstract_storage_decl_accessors( //dir=decl
+ int id: @abstract_storage_decl ref,
+ int index: int ref,
+ int accessor: @accessor_or_none ref
+);
+
+enum_element_decls( //dir=decl
+ unique int id: @enum_element_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+enum_element_decl_params( //dir=decl
+ int id: @enum_element_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@function =
+ @accessor_or_named_function
+| @deinitializer
+| @initializer
+;
+
+infix_operator_decls( //dir=decl
+ unique int id: @infix_operator_decl
+);
+
+#keyset[id]
+infix_operator_decl_precedence_groups( //dir=decl
+ int id: @infix_operator_decl ref,
+ int precedence_group: @precedence_group_decl_or_none ref
+);
+
+macro_decls( //dir=decl
+ unique int id: @macro_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+macro_decl_parameters( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int parameter: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+macro_decl_roles( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int role: @macro_role_or_none ref
+);
+
+postfix_operator_decls( //dir=decl
+ unique int id: @postfix_operator_decl
+);
+
+prefix_operator_decls( //dir=decl
+ unique int id: @prefix_operator_decl
+);
+
+@type_decl =
+ @abstract_type_param_decl
+| @generic_type_decl
+| @module_decl
+;
+
+#keyset[id]
+type_decls( //dir=decl
+ int id: @type_decl ref,
+ string name: string ref
+);
+
+#keyset[id, index]
+type_decl_inherited_types( //dir=decl
+ int id: @type_decl ref,
+ int index: int ref,
+ int inherited_type: @type_or_none ref
+);
+
+@abstract_type_param_decl =
+ @associated_type_decl
+| @generic_type_param_decl
+;
+
+@accessor_or_named_function =
+ @accessor
+| @named_function
+;
+
+deinitializers( //dir=decl
+ unique int id: @deinitializer
+);
+
+@generic_type_decl =
+ @nominal_type_decl
+| @opaque_type_decl
+| @type_alias_decl
+;
+
+initializers( //dir=decl
+ unique int id: @initializer
+);
+
+module_decls( //dir=decl
+ unique int id: @module_decl
+);
+
+#keyset[id]
+module_decl_is_builtin_module( //dir=decl
+ int id: @module_decl ref
+);
+
+#keyset[id]
+module_decl_is_system_module( //dir=decl
+ int id: @module_decl ref
+);
+
+module_decl_imported_modules( //dir=decl
+ int id: @module_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+module_decl_exported_modules( //dir=decl
+ int id: @module_decl ref,
+ int exported_module: @module_decl_or_none ref
+);
+
+subscript_decls( //dir=decl
+ unique int id: @subscript_decl,
+ int element_type: @type_or_none ref
+);
+
+#keyset[id, index]
+subscript_decl_params( //dir=decl
+ int id: @subscript_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@var_decl =
+ @concrete_var_decl
+| @param_decl
+;
+
+#keyset[id]
+var_decls( //dir=decl
+ int id: @var_decl ref,
+ string name: string ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_attached_property_wrapper_types( //dir=decl
+ int id: @var_decl ref,
+ int attached_property_wrapper_type: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_patterns( //dir=decl
+ int id: @var_decl ref,
+ int parent_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_initializers( //dir=decl
+ int id: @var_decl ref,
+ int parent_initializer: @expr_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var: @var_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var: @var_decl_or_none ref
+);
+
+accessors( //dir=decl
+ unique int id: @accessor
+);
+
+#keyset[id]
+accessor_is_getter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_setter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_will_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_did_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_read( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_modify( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_address( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_mutable_address( //dir=decl
+ int id: @accessor ref
+);
+
+associated_type_decls( //dir=decl
+ unique int id: @associated_type_decl
+);
+
+concrete_var_decls( //dir=decl
+ unique int id: @concrete_var_decl,
+ int introducer_int: int ref
+);
+
+generic_type_param_decls( //dir=decl
+ unique int id: @generic_type_param_decl
+);
+
+named_functions( //dir=decl
+ unique int id: @named_function
+);
+
+@nominal_type_decl =
+ @class_decl
+| @enum_decl
+| @protocol_decl
+| @struct_decl
+;
+
+#keyset[id]
+nominal_type_decls( //dir=decl
+ int id: @nominal_type_decl ref,
+ int type_: @type_or_none ref
+);
+
+opaque_type_decls( //dir=decl
+ unique int id: @opaque_type_decl,
+ int naming_declaration: @value_decl_or_none ref
+);
+
+#keyset[id, index]
+opaque_type_decl_opaque_generic_params( //dir=decl
+ int id: @opaque_type_decl ref,
+ int index: int ref,
+ int opaque_generic_param: @generic_type_param_type_or_none ref
+);
+
+param_decls( //dir=decl
+ unique int id: @param_decl
+);
+
+#keyset[id]
+param_decl_is_inout( //dir=decl
+ int id: @param_decl ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_vars( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var: @var_decl_or_none ref
+);
+
+type_alias_decls( //dir=decl
+ unique int id: @type_alias_decl,
+ int aliased_type: @type_or_none ref
+);
+
+class_decls( //dir=decl
+ unique int id: @class_decl
+);
+
+enum_decls( //dir=decl
+ unique int id: @enum_decl
+);
+
+protocol_decls( //dir=decl
+ unique int id: @protocol_decl
+);
+
+struct_decls( //dir=decl
+ unique int id: @struct_decl
+);
+
+arguments( //dir=expr
+ unique int id: @argument,
+ string label: string ref,
+ int expr: @expr_or_none ref
+);
+
+@expr =
+ @any_try_expr
+| @applied_property_wrapper_expr
+| @apply_expr
+| @assign_expr
+| @bind_optional_expr
+| @capture_list_expr
+| @closure_expr
+| @collection_expr
+| @consume_expr
+| @copy_expr
+| @decl_ref_expr
+| @default_argument_expr
+| @discard_assignment_expr
+| @dot_syntax_base_ignored_expr
+| @dynamic_type_expr
+| @enum_is_case_expr
+| @error_expr
+| @explicit_cast_expr
+| @force_value_expr
+| @identity_expr
+| @if_expr
+| @implicit_conversion_expr
+| @in_out_expr
+| @key_path_application_expr
+| @key_path_dot_expr
+| @key_path_expr
+| @lazy_initialization_expr
+| @literal_expr
+| @lookup_expr
+| @make_temporarily_escapable_expr
+| @materialize_pack_expr
+| @obj_c_selector_expr
+| @one_way_expr
+| @opaque_value_expr
+| @open_existential_expr
+| @optional_evaluation_expr
+| @other_initializer_ref_expr
+| @overloaded_decl_ref_expr
+| @pack_element_expr
+| @pack_expansion_expr
+| @property_wrapper_value_placeholder_expr
+| @rebind_self_in_initializer_expr
+| @sequence_expr
+| @single_value_stmt_expr
+| @super_ref_expr
+| @tap_expr
+| @tuple_element_expr
+| @tuple_expr
+| @type_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @vararg_expansion_expr
+;
+
+#keyset[id]
+expr_types( //dir=expr
+ int id: @expr ref,
+ int type_: @type_or_none ref
+);
+
+@any_try_expr =
+ @force_try_expr
+| @optional_try_expr
+| @try_expr
+;
+
+#keyset[id]
+any_try_exprs( //dir=expr
+ int id: @any_try_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+applied_property_wrapper_exprs( //dir=expr
+ unique int id: @applied_property_wrapper_expr,
+ int kind: int ref,
+ int value: @expr_or_none ref,
+ int param: @param_decl_or_none ref
+);
+
+@apply_expr =
+ @binary_expr
+| @call_expr
+| @postfix_unary_expr
+| @prefix_unary_expr
+| @self_apply_expr
+;
+
+#keyset[id]
+apply_exprs( //dir=expr
+ int id: @apply_expr ref,
+ int function: @expr_or_none ref
+);
+
+#keyset[id, index]
+apply_expr_arguments( //dir=expr
+ int id: @apply_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+assign_exprs( //dir=expr
+ unique int id: @assign_expr,
+ int dest: @expr_or_none ref,
+ int source: @expr_or_none ref
+);
+
+bind_optional_exprs( //dir=expr
+ unique int id: @bind_optional_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+capture_list_exprs( //dir=expr
+ unique int id: @capture_list_expr,
+ int closure_body: @closure_expr_or_none ref
+);
+
+#keyset[id, index]
+capture_list_expr_binding_decls( //dir=expr
+ int id: @capture_list_expr ref,
+ int index: int ref,
+ int binding_decl: @pattern_binding_decl_or_none ref
+);
+
+@closure_expr =
+ @auto_closure_expr
+| @explicit_closure_expr
+;
+
+@collection_expr =
+ @array_expr
+| @dictionary_expr
+;
+
+consume_exprs( //dir=expr
+ unique int id: @consume_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+copy_exprs( //dir=expr
+ unique int id: @copy_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+decl_ref_exprs( //dir=expr
+ unique int id: @decl_ref_expr,
+ int decl: @decl_or_none ref
+);
+
+#keyset[id, index]
+decl_ref_expr_replacement_types( //dir=expr
+ int id: @decl_ref_expr ref,
+ int index: int ref,
+ int replacement_type: @type_or_none ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+default_argument_exprs( //dir=expr
+ unique int id: @default_argument_expr,
+ int param_decl: @param_decl_or_none ref,
+ int param_index: int ref
+);
+
+#keyset[id]
+default_argument_expr_caller_side_defaults( //dir=expr
+ int id: @default_argument_expr ref,
+ int caller_side_default: @expr_or_none ref
+);
+
+discard_assignment_exprs( //dir=expr
+ unique int id: @discard_assignment_expr
+);
+
+dot_syntax_base_ignored_exprs( //dir=expr
+ unique int id: @dot_syntax_base_ignored_expr,
+ int qualifier: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+dynamic_type_exprs( //dir=expr
+ unique int id: @dynamic_type_expr,
+ int base: @expr_or_none ref
+);
+
+enum_is_case_exprs( //dir=expr
+ unique int id: @enum_is_case_expr,
+ int sub_expr: @expr_or_none ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+error_exprs( //dir=expr
+ unique int id: @error_expr
+);
+
+@explicit_cast_expr =
+ @checked_cast_expr
+| @coerce_expr
+;
+
+#keyset[id]
+explicit_cast_exprs( //dir=expr
+ int id: @explicit_cast_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+force_value_exprs( //dir=expr
+ unique int id: @force_value_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@identity_expr =
+ @await_expr
+| @borrow_expr
+| @dot_self_expr
+| @paren_expr
+| @unresolved_member_chain_result_expr
+;
+
+#keyset[id]
+identity_exprs( //dir=expr
+ int id: @identity_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+if_exprs( //dir=expr
+ unique int id: @if_expr,
+ int condition: @expr_or_none ref,
+ int then_expr: @expr_or_none ref,
+ int else_expr: @expr_or_none ref
+);
+
+@implicit_conversion_expr =
+ @abi_safe_conversion_expr
+| @any_hashable_erasure_expr
+| @archetype_to_super_expr
+| @array_to_pointer_expr
+| @bridge_from_obj_c_expr
+| @bridge_to_obj_c_expr
+| @class_metatype_to_object_expr
+| @collection_upcast_conversion_expr
+| @conditional_bridge_from_obj_c_expr
+| @covariant_function_conversion_expr
+| @covariant_return_conversion_expr
+| @derived_to_base_expr
+| @destructure_tuple_expr
+| @differentiable_function_expr
+| @differentiable_function_extract_original_expr
+| @erasure_expr
+| @existential_metatype_to_object_expr
+| @foreign_object_conversion_expr
+| @function_conversion_expr
+| @in_out_to_pointer_expr
+| @inject_into_optional_expr
+| @linear_function_expr
+| @linear_function_extract_original_expr
+| @linear_to_differentiable_function_expr
+| @load_expr
+| @metatype_conversion_expr
+| @pointer_to_pointer_expr
+| @protocol_metatype_to_object_expr
+| @string_to_pointer_expr
+| @underlying_to_opaque_expr
+| @unevaluated_instance_expr
+| @unresolved_type_conversion_expr
+;
+
+#keyset[id]
+implicit_conversion_exprs( //dir=expr
+ int id: @implicit_conversion_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+in_out_exprs( //dir=expr
+ unique int id: @in_out_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+key_path_application_exprs( //dir=expr
+ unique int id: @key_path_application_expr,
+ int base: @expr_or_none ref,
+ int key_path: @expr_or_none ref
+);
+
+key_path_dot_exprs( //dir=expr
+ unique int id: @key_path_dot_expr
+);
+
+key_path_exprs( //dir=expr
+ unique int id: @key_path_expr
+);
+
+#keyset[id]
+key_path_expr_roots( //dir=expr
+ int id: @key_path_expr ref,
+ int root: @type_repr_or_none ref
+);
+
+#keyset[id, index]
+key_path_expr_components( //dir=expr
+ int id: @key_path_expr ref,
+ int index: int ref,
+ int component: @key_path_component_or_none ref
+);
+
+lazy_initialization_exprs( //dir=expr
+ unique int id: @lazy_initialization_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@literal_expr =
+ @builtin_literal_expr
+| @interpolated_string_literal_expr
+| @nil_literal_expr
+| @object_literal_expr
+| @regex_literal_expr
+;
+
+@lookup_expr =
+ @dynamic_lookup_expr
+| @member_ref_expr
+| @subscript_expr
+;
+
+#keyset[id]
+lookup_exprs( //dir=expr
+ int id: @lookup_expr ref,
+ int base: @expr_or_none ref
+);
+
+#keyset[id]
+lookup_expr_members( //dir=expr
+ int id: @lookup_expr ref,
+ int member: @decl_or_none ref
+);
+
+make_temporarily_escapable_exprs( //dir=expr
+ unique int id: @make_temporarily_escapable_expr,
+ int escaping_closure: @opaque_value_expr_or_none ref,
+ int nonescaping_closure: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+materialize_pack_exprs( //dir=expr
+ unique int id: @materialize_pack_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+obj_c_selector_exprs( //dir=expr
+ unique int id: @obj_c_selector_expr,
+ int sub_expr: @expr_or_none ref,
+ int method: @function_or_none ref
+);
+
+one_way_exprs( //dir=expr
+ unique int id: @one_way_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+opaque_value_exprs( //dir=expr
+ unique int id: @opaque_value_expr
+);
+
+open_existential_exprs( //dir=expr
+ unique int id: @open_existential_expr,
+ int sub_expr: @expr_or_none ref,
+ int existential: @expr_or_none ref,
+ int opaque_expr: @opaque_value_expr_or_none ref
+);
+
+optional_evaluation_exprs( //dir=expr
+ unique int id: @optional_evaluation_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+other_initializer_ref_exprs( //dir=expr
+ unique int id: @other_initializer_ref_expr,
+ int initializer: @initializer_or_none ref
+);
+
+overloaded_decl_ref_exprs( //dir=expr
+ unique int id: @overloaded_decl_ref_expr
+);
+
+#keyset[id, index]
+overloaded_decl_ref_expr_possible_declarations( //dir=expr
+ int id: @overloaded_decl_ref_expr ref,
+ int index: int ref,
+ int possible_declaration: @value_decl_or_none ref
+);
+
+pack_element_exprs( //dir=expr
+ unique int id: @pack_element_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+pack_expansion_exprs( //dir=expr
+ unique int id: @pack_expansion_expr,
+ int pattern_expr: @expr_or_none ref
+);
+
+property_wrapper_value_placeholder_exprs( //dir=expr
+ unique int id: @property_wrapper_value_placeholder_expr,
+ int placeholder: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr
+ int id: @property_wrapper_value_placeholder_expr ref,
+ int wrapped_value: @expr_or_none ref
+);
+
+rebind_self_in_initializer_exprs( //dir=expr
+ unique int id: @rebind_self_in_initializer_expr,
+ int sub_expr: @expr_or_none ref,
+ int self: @var_decl_or_none ref
+);
+
+sequence_exprs( //dir=expr
+ unique int id: @sequence_expr
+);
+
+#keyset[id, index]
+sequence_expr_elements( //dir=expr
+ int id: @sequence_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+single_value_stmt_exprs( //dir=expr
+ unique int id: @single_value_stmt_expr,
+ int stmt: @stmt_or_none ref
+);
+
+super_ref_exprs( //dir=expr
+ unique int id: @super_ref_expr,
+ int self: @var_decl_or_none ref
+);
+
+tap_exprs( //dir=expr
+ unique int id: @tap_expr,
+ int body: @brace_stmt_or_none ref,
+ int var: @var_decl_or_none ref
+);
+
+#keyset[id]
+tap_expr_sub_exprs( //dir=expr
+ int id: @tap_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+tuple_element_exprs( //dir=expr
+ unique int id: @tuple_element_expr,
+ int sub_expr: @expr_or_none ref,
+ int index: int ref
+);
+
+tuple_exprs( //dir=expr
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_elements( //dir=expr
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+type_exprs( //dir=expr
+ unique int id: @type_expr
+);
+
+#keyset[id]
+type_expr_type_reprs( //dir=expr
+ int id: @type_expr ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+unresolved_decl_ref_exprs( //dir=expr
+ unique int id: @unresolved_decl_ref_expr
+);
+
+#keyset[id]
+unresolved_decl_ref_expr_names( //dir=expr
+ int id: @unresolved_decl_ref_expr ref,
+ string name: string ref
+);
+
+unresolved_dot_exprs( //dir=expr
+ unique int id: @unresolved_dot_expr,
+ int base: @expr_or_none ref,
+ string name: string ref
+);
+
+unresolved_member_exprs( //dir=expr
+ unique int id: @unresolved_member_expr,
+ string name: string ref
+);
+
+unresolved_pattern_exprs( //dir=expr
+ unique int id: @unresolved_pattern_expr,
+ int sub_pattern: @pattern_or_none ref
+);
+
+unresolved_specialize_exprs( //dir=expr
+ unique int id: @unresolved_specialize_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+vararg_expansion_exprs( //dir=expr
+ unique int id: @vararg_expansion_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+abi_safe_conversion_exprs( //dir=expr
+ unique int id: @abi_safe_conversion_expr
+);
+
+any_hashable_erasure_exprs( //dir=expr
+ unique int id: @any_hashable_erasure_expr
+);
+
+archetype_to_super_exprs( //dir=expr
+ unique int id: @archetype_to_super_expr
+);
+
+array_exprs( //dir=expr
+ unique int id: @array_expr
+);
+
+#keyset[id, index]
+array_expr_elements( //dir=expr
+ int id: @array_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+array_to_pointer_exprs( //dir=expr
+ unique int id: @array_to_pointer_expr
+);
+
+auto_closure_exprs( //dir=expr
+ unique int id: @auto_closure_expr
+);
+
+await_exprs( //dir=expr
+ unique int id: @await_expr
+);
+
+binary_exprs( //dir=expr
+ unique int id: @binary_expr
+);
+
+borrow_exprs( //dir=expr
+ unique int id: @borrow_expr
+);
+
+bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @bridge_from_obj_c_expr
+);
+
+bridge_to_obj_c_exprs( //dir=expr
+ unique int id: @bridge_to_obj_c_expr
+);
+
+@builtin_literal_expr =
+ @boolean_literal_expr
+| @magic_identifier_literal_expr
+| @number_literal_expr
+| @string_literal_expr
+;
+
+call_exprs( //dir=expr
+ unique int id: @call_expr
+);
+
+@checked_cast_expr =
+ @conditional_checked_cast_expr
+| @forced_checked_cast_expr
+| @is_expr
+;
+
+class_metatype_to_object_exprs( //dir=expr
+ unique int id: @class_metatype_to_object_expr
+);
+
+coerce_exprs( //dir=expr
+ unique int id: @coerce_expr
+);
+
+collection_upcast_conversion_exprs( //dir=expr
+ unique int id: @collection_upcast_conversion_expr
+);
+
+conditional_bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @conditional_bridge_from_obj_c_expr
+);
+
+covariant_function_conversion_exprs( //dir=expr
+ unique int id: @covariant_function_conversion_expr
+);
+
+covariant_return_conversion_exprs( //dir=expr
+ unique int id: @covariant_return_conversion_expr
+);
+
+derived_to_base_exprs( //dir=expr
+ unique int id: @derived_to_base_expr
+);
+
+destructure_tuple_exprs( //dir=expr
+ unique int id: @destructure_tuple_expr
+);
+
+dictionary_exprs( //dir=expr
+ unique int id: @dictionary_expr
+);
+
+#keyset[id, index]
+dictionary_expr_elements( //dir=expr
+ int id: @dictionary_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+differentiable_function_exprs( //dir=expr
+ unique int id: @differentiable_function_expr
+);
+
+differentiable_function_extract_original_exprs( //dir=expr
+ unique int id: @differentiable_function_extract_original_expr
+);
+
+dot_self_exprs( //dir=expr
+ unique int id: @dot_self_expr
+);
+
+@dynamic_lookup_expr =
+ @dynamic_member_ref_expr
+| @dynamic_subscript_expr
+;
+
+erasure_exprs( //dir=expr
+ unique int id: @erasure_expr
+);
+
+existential_metatype_to_object_exprs( //dir=expr
+ unique int id: @existential_metatype_to_object_expr
+);
+
+explicit_closure_exprs( //dir=expr
+ unique int id: @explicit_closure_expr
+);
+
+force_try_exprs( //dir=expr
+ unique int id: @force_try_expr
+);
+
+foreign_object_conversion_exprs( //dir=expr
+ unique int id: @foreign_object_conversion_expr
+);
+
+function_conversion_exprs( //dir=expr
+ unique int id: @function_conversion_expr
+);
+
+in_out_to_pointer_exprs( //dir=expr
+ unique int id: @in_out_to_pointer_expr
+);
+
+inject_into_optional_exprs( //dir=expr
+ unique int id: @inject_into_optional_expr
+);
+
+interpolated_string_literal_exprs( //dir=expr
+ unique int id: @interpolated_string_literal_expr
+);
+
+#keyset[id]
+interpolated_string_literal_expr_interpolation_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int interpolation_expr: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+interpolated_string_literal_expr_appending_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int appending_expr: @tap_expr_or_none ref
+);
+
+linear_function_exprs( //dir=expr
+ unique int id: @linear_function_expr
+);
+
+linear_function_extract_original_exprs( //dir=expr
+ unique int id: @linear_function_extract_original_expr
+);
+
+linear_to_differentiable_function_exprs( //dir=expr
+ unique int id: @linear_to_differentiable_function_expr
+);
+
+load_exprs( //dir=expr
+ unique int id: @load_expr
+);
+
+member_ref_exprs( //dir=expr
+ unique int id: @member_ref_expr
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+metatype_conversion_exprs( //dir=expr
+ unique int id: @metatype_conversion_expr
+);
+
+nil_literal_exprs( //dir=expr
+ unique int id: @nil_literal_expr
+);
+
+object_literal_exprs( //dir=expr
+ unique int id: @object_literal_expr,
+ int kind: int ref
+);
+
+#keyset[id, index]
+object_literal_expr_arguments( //dir=expr
+ int id: @object_literal_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+optional_try_exprs( //dir=expr
+ unique int id: @optional_try_expr
+);
+
+paren_exprs( //dir=expr
+ unique int id: @paren_expr
+);
+
+pointer_to_pointer_exprs( //dir=expr
+ unique int id: @pointer_to_pointer_expr
+);
+
+postfix_unary_exprs( //dir=expr
+ unique int id: @postfix_unary_expr
+);
+
+prefix_unary_exprs( //dir=expr
+ unique int id: @prefix_unary_expr
+);
+
+protocol_metatype_to_object_exprs( //dir=expr
+ unique int id: @protocol_metatype_to_object_expr
+);
+
+regex_literal_exprs( //dir=expr
+ unique int id: @regex_literal_expr,
+ string pattern: string ref,
+ int version: int ref
+);
+
+@self_apply_expr =
+ @dot_syntax_call_expr
+| @initializer_ref_call_expr
+;
+
+#keyset[id]
+self_apply_exprs( //dir=expr
+ int id: @self_apply_expr ref,
+ int base: @expr_or_none ref
+);
+
+string_to_pointer_exprs( //dir=expr
+ unique int id: @string_to_pointer_expr
+);
+
+subscript_exprs( //dir=expr
+ unique int id: @subscript_expr
+);
+
+#keyset[id, index]
+subscript_expr_arguments( //dir=expr
+ int id: @subscript_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_ordinary_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+try_exprs( //dir=expr
+ unique int id: @try_expr
+);
+
+underlying_to_opaque_exprs( //dir=expr
+ unique int id: @underlying_to_opaque_expr
+);
+
+unevaluated_instance_exprs( //dir=expr
+ unique int id: @unevaluated_instance_expr
+);
+
+unresolved_member_chain_result_exprs( //dir=expr
+ unique int id: @unresolved_member_chain_result_expr
+);
+
+unresolved_type_conversion_exprs( //dir=expr
+ unique int id: @unresolved_type_conversion_expr
+);
+
+boolean_literal_exprs( //dir=expr
+ unique int id: @boolean_literal_expr,
+ boolean value: boolean ref
+);
+
+conditional_checked_cast_exprs( //dir=expr
+ unique int id: @conditional_checked_cast_expr
+);
+
+dot_syntax_call_exprs( //dir=expr
+ unique int id: @dot_syntax_call_expr
+);
+
+dynamic_member_ref_exprs( //dir=expr
+ unique int id: @dynamic_member_ref_expr
+);
+
+dynamic_subscript_exprs( //dir=expr
+ unique int id: @dynamic_subscript_expr
+);
+
+forced_checked_cast_exprs( //dir=expr
+ unique int id: @forced_checked_cast_expr
+);
+
+initializer_ref_call_exprs( //dir=expr
+ unique int id: @initializer_ref_call_expr
+);
+
+is_exprs( //dir=expr
+ unique int id: @is_expr
+);
+
+magic_identifier_literal_exprs( //dir=expr
+ unique int id: @magic_identifier_literal_expr,
+ string kind: string ref
+);
+
+@number_literal_expr =
+ @float_literal_expr
+| @integer_literal_expr
+;
+
+string_literal_exprs( //dir=expr
+ unique int id: @string_literal_expr,
+ string value: string ref
+);
+
+float_literal_exprs( //dir=expr
+ unique int id: @float_literal_expr,
+ string string_value: string ref
+);
+
+integer_literal_exprs( //dir=expr
+ unique int id: @integer_literal_expr,
+ string string_value: string ref
+);
+
+@pattern =
+ @any_pattern
+| @binding_pattern
+| @bool_pattern
+| @enum_element_pattern
+| @expr_pattern
+| @is_pattern
+| @named_pattern
+| @optional_some_pattern
+| @paren_pattern
+| @tuple_pattern
+| @typed_pattern
+;
+
+#keyset[id]
+pattern_types( //dir=pattern
+ int id: @pattern ref,
+ int type_: @type_or_none ref
+);
+
+any_patterns( //dir=pattern
+ unique int id: @any_pattern
+);
+
+binding_patterns( //dir=pattern
+ unique int id: @binding_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+bool_patterns( //dir=pattern
+ unique int id: @bool_pattern,
+ boolean value: boolean ref
+);
+
+enum_element_patterns( //dir=pattern
+ unique int id: @enum_element_pattern,
+ int element: @enum_element_decl_or_none ref
+);
+
+#keyset[id]
+enum_element_pattern_sub_patterns( //dir=pattern
+ int id: @enum_element_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+expr_patterns( //dir=pattern
+ unique int id: @expr_pattern,
+ int sub_expr: @expr_or_none ref
+);
+
+is_patterns( //dir=pattern
+ unique int id: @is_pattern
+);
+
+#keyset[id]
+is_pattern_cast_type_reprs( //dir=pattern
+ int id: @is_pattern ref,
+ int cast_type_repr: @type_repr_or_none ref
+);
+
+#keyset[id]
+is_pattern_sub_patterns( //dir=pattern
+ int id: @is_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+named_patterns( //dir=pattern
+ unique int id: @named_pattern,
+ int var_decl: @var_decl_or_none ref
+);
+
+optional_some_patterns( //dir=pattern
+ unique int id: @optional_some_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+paren_patterns( //dir=pattern
+ unique int id: @paren_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+tuple_patterns( //dir=pattern
+ unique int id: @tuple_pattern
+);
+
+#keyset[id, index]
+tuple_pattern_elements( //dir=pattern
+ int id: @tuple_pattern ref,
+ int index: int ref,
+ int element: @pattern_or_none ref
+);
+
+typed_patterns( //dir=pattern
+ unique int id: @typed_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+typed_pattern_type_reprs( //dir=pattern
+ int id: @typed_pattern ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+case_label_items( //dir=stmt
+ unique int id: @case_label_item,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+case_label_item_guards( //dir=stmt
+ int id: @case_label_item ref,
+ int guard: @expr_or_none ref
+);
+
+condition_elements( //dir=stmt
+ unique int id: @condition_element
+);
+
+#keyset[id]
+condition_element_booleans( //dir=stmt
+ int id: @condition_element ref,
+ int boolean_: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_patterns( //dir=stmt
+ int id: @condition_element ref,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+condition_element_initializers( //dir=stmt
+ int id: @condition_element ref,
+ int initializer: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_availabilities( //dir=stmt
+ int id: @condition_element ref,
+ int availability: @availability_info_or_none ref
+);
+
+@stmt =
+ @brace_stmt
+| @break_stmt
+| @case_stmt
+| @continue_stmt
+| @defer_stmt
+| @discard_stmt
+| @fail_stmt
+| @fallthrough_stmt
+| @labeled_stmt
+| @pound_assert_stmt
+| @return_stmt
+| @then_stmt
+| @throw_stmt
+| @yield_stmt
+;
+
+stmt_conditions( //dir=stmt
+ unique int id: @stmt_condition
+);
+
+#keyset[id, index]
+stmt_condition_elements( //dir=stmt
+ int id: @stmt_condition ref,
+ int index: int ref,
+ int element: @condition_element_or_none ref
+);
+
+brace_stmts( //dir=stmt
+ unique int id: @brace_stmt
+);
+
+#keyset[id, index]
+brace_stmt_elements( //dir=stmt
+ int id: @brace_stmt ref,
+ int index: int ref,
+ int element: @ast_node_or_none ref
+);
+
+break_stmts( //dir=stmt
+ unique int id: @break_stmt
+);
+
+#keyset[id]
+break_stmt_target_names( //dir=stmt
+ int id: @break_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+break_stmt_targets( //dir=stmt
+ int id: @break_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+case_stmts( //dir=stmt
+ unique int id: @case_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_labels( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int label: @case_label_item_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_variables( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+continue_stmts( //dir=stmt
+ unique int id: @continue_stmt
+);
+
+#keyset[id]
+continue_stmt_target_names( //dir=stmt
+ int id: @continue_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+continue_stmt_targets( //dir=stmt
+ int id: @continue_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+defer_stmts( //dir=stmt
+ unique int id: @defer_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+discard_stmts( //dir=stmt
+ unique int id: @discard_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+fail_stmts( //dir=stmt
+ unique int id: @fail_stmt
+);
+
+fallthrough_stmts( //dir=stmt
+ unique int id: @fallthrough_stmt,
+ int fallthrough_source: @case_stmt_or_none ref,
+ int fallthrough_dest: @case_stmt_or_none ref
+);
+
+@labeled_stmt =
+ @do_catch_stmt
+| @do_stmt
+| @for_each_stmt
+| @labeled_conditional_stmt
+| @repeat_while_stmt
+| @switch_stmt
+;
+
+#keyset[id]
+labeled_stmt_labels( //dir=stmt
+ int id: @labeled_stmt ref,
+ string label: string ref
+);
+
+pound_assert_stmts( //dir=stmt
+ unique int id: @pound_assert_stmt,
+ int condition: @expr_or_none ref,
+ string message: string ref
+);
+
+return_stmts( //dir=stmt
+ unique int id: @return_stmt
+);
+
+#keyset[id]
+return_stmt_results( //dir=stmt
+ int id: @return_stmt ref,
+ int result: @expr_or_none ref
+);
+
+then_stmts( //dir=stmt
+ unique int id: @then_stmt,
+ int result: @expr_or_none ref
+);
+
+throw_stmts( //dir=stmt
+ unique int id: @throw_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+yield_stmts( //dir=stmt
+ unique int id: @yield_stmt
+);
+
+#keyset[id, index]
+yield_stmt_results( //dir=stmt
+ int id: @yield_stmt ref,
+ int index: int ref,
+ int result: @expr_or_none ref
+);
+
+do_catch_stmts( //dir=stmt
+ unique int id: @do_catch_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+do_catch_stmt_catches( //dir=stmt
+ int id: @do_catch_stmt ref,
+ int index: int ref,
+ int catch: @case_stmt_or_none ref
+);
+
+do_stmts( //dir=stmt
+ unique int id: @do_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+for_each_stmts( //dir=stmt
+ unique int id: @for_each_stmt,
+ int pattern: @pattern_or_none ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+for_each_stmt_variables( //dir=stmt
+ int id: @for_each_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_wheres( //dir=stmt
+ int id: @for_each_stmt ref,
+ int where: @expr_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_iterator_vars( //dir=stmt
+ int id: @for_each_stmt ref,
+ int iteratorVar: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_next_calls( //dir=stmt
+ int id: @for_each_stmt ref,
+ int nextCall: @expr_or_none ref
+);
+
+@labeled_conditional_stmt =
+ @guard_stmt
+| @if_stmt
+| @while_stmt
+;
+
+#keyset[id]
+labeled_conditional_stmts( //dir=stmt
+ int id: @labeled_conditional_stmt ref,
+ int condition: @stmt_condition_or_none ref
+);
+
+repeat_while_stmts( //dir=stmt
+ unique int id: @repeat_while_stmt,
+ int condition: @expr_or_none ref,
+ int body: @stmt_or_none ref
+);
+
+switch_stmts( //dir=stmt
+ unique int id: @switch_stmt,
+ int expr: @expr_or_none ref
+);
+
+#keyset[id, index]
+switch_stmt_cases( //dir=stmt
+ int id: @switch_stmt ref,
+ int index: int ref,
+ int case_: @case_stmt_or_none ref
+);
+
+guard_stmts( //dir=stmt
+ unique int id: @guard_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+if_stmts( //dir=stmt
+ unique int id: @if_stmt,
+ int then: @stmt_or_none ref
+);
+
+#keyset[id]
+if_stmt_elses( //dir=stmt
+ int id: @if_stmt ref,
+ int else: @stmt_or_none ref
+);
+
+while_stmts( //dir=stmt
+ unique int id: @while_stmt,
+ int body: @stmt_or_none ref
+);
+
+@type =
+ @any_function_type
+| @any_generic_type
+| @any_metatype_type
+| @builtin_type
+| @dependent_member_type
+| @dynamic_self_type
+| @error_type
+| @existential_type
+| @in_out_type
+| @l_value_type
+| @module_type
+| @pack_element_type
+| @pack_expansion_type
+| @pack_type
+| @parameterized_protocol_type
+| @protocol_composition_type
+| @reference_storage_type
+| @substitutable_type
+| @sugar_type
+| @tuple_type
+| @unresolved_type
+;
+
+#keyset[id]
+types( //dir=type
+ int id: @type ref,
+ string name: string ref,
+ int canonical_type: @type_or_none ref
+);
+
+type_reprs( //dir=type
+ unique int id: @type_repr,
+ int type_: @type_or_none ref
+);
+
+@any_function_type =
+ @function_type
+| @generic_function_type
+;
+
+#keyset[id]
+any_function_types( //dir=type
+ int id: @any_function_type ref,
+ int result: @type_or_none ref
+);
+
+#keyset[id, index]
+any_function_type_param_types( //dir=type
+ int id: @any_function_type ref,
+ int index: int ref,
+ int param_type: @type_or_none ref
+);
+
+#keyset[id]
+any_function_type_is_throwing( //dir=type
+ int id: @any_function_type ref
+);
+
+#keyset[id]
+any_function_type_is_async( //dir=type
+ int id: @any_function_type ref
+);
+
+@any_generic_type =
+ @nominal_or_bound_generic_nominal_type
+| @unbound_generic_type
+;
+
+#keyset[id]
+any_generic_types( //dir=type
+ int id: @any_generic_type ref,
+ int declaration: @generic_type_decl_or_none ref
+);
+
+#keyset[id]
+any_generic_type_parents( //dir=type
+ int id: @any_generic_type ref,
+ int parent: @type_or_none ref
+);
+
+@any_metatype_type =
+ @existential_metatype_type
+| @metatype_type
+;
+
+@builtin_type =
+ @any_builtin_integer_type
+| @builtin_bridge_object_type
+| @builtin_default_actor_storage_type
+| @builtin_executor_type
+| @builtin_float_type
+| @builtin_job_type
+| @builtin_native_object_type
+| @builtin_raw_pointer_type
+| @builtin_raw_unsafe_continuation_type
+| @builtin_unsafe_value_buffer_type
+| @builtin_vector_type
+;
+
+dependent_member_types( //dir=type
+ unique int id: @dependent_member_type,
+ int base_type: @type_or_none ref,
+ int associated_type_decl: @associated_type_decl_or_none ref
+);
+
+dynamic_self_types( //dir=type
+ unique int id: @dynamic_self_type,
+ int static_self_type: @type_or_none ref
+);
+
+error_types( //dir=type
+ unique int id: @error_type
+);
+
+existential_types( //dir=type
+ unique int id: @existential_type,
+ int constraint: @type_or_none ref
+);
+
+in_out_types( //dir=type
+ unique int id: @in_out_type,
+ int object_type: @type_or_none ref
+);
+
+l_value_types( //dir=type
+ unique int id: @l_value_type,
+ int object_type: @type_or_none ref
+);
+
+module_types( //dir=type
+ unique int id: @module_type,
+ int module: @module_decl_or_none ref
+);
+
+pack_element_types( //dir=type
+ unique int id: @pack_element_type,
+ int pack_type: @type_or_none ref
+);
+
+pack_expansion_types( //dir=type
+ unique int id: @pack_expansion_type,
+ int pattern_type: @type_or_none ref,
+ int count_type: @type_or_none ref
+);
+
+pack_types( //dir=type
+ unique int id: @pack_type
+);
+
+#keyset[id, index]
+pack_type_elements( //dir=type
+ int id: @pack_type ref,
+ int index: int ref,
+ int element: @type_or_none ref
+);
+
+parameterized_protocol_types( //dir=type
+ unique int id: @parameterized_protocol_type,
+ int base: @protocol_type_or_none ref
+);
+
+#keyset[id, index]
+parameterized_protocol_type_args( //dir=type
+ int id: @parameterized_protocol_type ref,
+ int index: int ref,
+ int arg: @type_or_none ref
+);
+
+protocol_composition_types( //dir=type
+ unique int id: @protocol_composition_type
+);
+
+#keyset[id, index]
+protocol_composition_type_members( //dir=type
+ int id: @protocol_composition_type ref,
+ int index: int ref,
+ int member: @type_or_none ref
+);
+
+@reference_storage_type =
+ @unmanaged_storage_type
+| @unowned_storage_type
+| @weak_storage_type
+;
+
+#keyset[id]
+reference_storage_types( //dir=type
+ int id: @reference_storage_type ref,
+ int referent_type: @type_or_none ref
+);
+
+@substitutable_type =
+ @archetype_type
+| @generic_type_param_type
+;
+
+@sugar_type =
+ @paren_type
+| @syntax_sugar_type
+| @type_alias_type
+;
+
+tuple_types( //dir=type
+ unique int id: @tuple_type
+);
+
+#keyset[id, index]
+tuple_type_types( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id, index]
+tuple_type_names( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unresolved_types( //dir=type
+ unique int id: @unresolved_type
+);
+
+@any_builtin_integer_type =
+ @builtin_integer_literal_type
+| @builtin_integer_type
+;
+
+@archetype_type =
+ @local_archetype_type
+| @opaque_type_archetype_type
+| @pack_archetype_type
+| @primary_archetype_type
+;
+
+#keyset[id]
+archetype_types( //dir=type
+ int id: @archetype_type ref,
+ int interface_type: @type_or_none ref
+);
+
+#keyset[id]
+archetype_type_superclasses( //dir=type
+ int id: @archetype_type ref,
+ int superclass: @type_or_none ref
+);
+
+#keyset[id, index]
+archetype_type_protocols( //dir=type
+ int id: @archetype_type ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+builtin_bridge_object_types( //dir=type
+ unique int id: @builtin_bridge_object_type
+);
+
+builtin_default_actor_storage_types( //dir=type
+ unique int id: @builtin_default_actor_storage_type
+);
+
+builtin_executor_types( //dir=type
+ unique int id: @builtin_executor_type
+);
+
+builtin_float_types( //dir=type
+ unique int id: @builtin_float_type
+);
+
+builtin_job_types( //dir=type
+ unique int id: @builtin_job_type
+);
+
+builtin_native_object_types( //dir=type
+ unique int id: @builtin_native_object_type
+);
+
+builtin_raw_pointer_types( //dir=type
+ unique int id: @builtin_raw_pointer_type
+);
+
+builtin_raw_unsafe_continuation_types( //dir=type
+ unique int id: @builtin_raw_unsafe_continuation_type
+);
+
+builtin_unsafe_value_buffer_types( //dir=type
+ unique int id: @builtin_unsafe_value_buffer_type
+);
+
+builtin_vector_types( //dir=type
+ unique int id: @builtin_vector_type
+);
+
+existential_metatype_types( //dir=type
+ unique int id: @existential_metatype_type
+);
+
+function_types( //dir=type
+ unique int id: @function_type
+);
+
+generic_function_types( //dir=type
+ unique int id: @generic_function_type
+);
+
+#keyset[id, index]
+generic_function_type_generic_params( //dir=type
+ int id: @generic_function_type ref,
+ int index: int ref,
+ int generic_param: @generic_type_param_type_or_none ref
+);
+
+generic_type_param_types( //dir=type
+ unique int id: @generic_type_param_type
+);
+
+metatype_types( //dir=type
+ unique int id: @metatype_type
+);
+
+@nominal_or_bound_generic_nominal_type =
+ @bound_generic_type
+| @nominal_type
+;
+
+paren_types( //dir=type
+ unique int id: @paren_type,
+ int type_: @type_or_none ref
+);
+
+@syntax_sugar_type =
+ @dictionary_type
+| @unary_syntax_sugar_type
+;
+
+type_alias_types( //dir=type
+ unique int id: @type_alias_type,
+ int decl: @type_alias_decl_or_none ref
+);
+
+unbound_generic_types( //dir=type
+ unique int id: @unbound_generic_type
+);
+
+unmanaged_storage_types( //dir=type
+ unique int id: @unmanaged_storage_type
+);
+
+unowned_storage_types( //dir=type
+ unique int id: @unowned_storage_type
+);
+
+weak_storage_types( //dir=type
+ unique int id: @weak_storage_type
+);
+
+@bound_generic_type =
+ @bound_generic_class_type
+| @bound_generic_enum_type
+| @bound_generic_struct_type
+;
+
+#keyset[id, index]
+bound_generic_type_arg_types( //dir=type
+ int id: @bound_generic_type ref,
+ int index: int ref,
+ int arg_type: @type_or_none ref
+);
+
+builtin_integer_literal_types( //dir=type
+ unique int id: @builtin_integer_literal_type
+);
+
+builtin_integer_types( //dir=type
+ unique int id: @builtin_integer_type
+);
+
+#keyset[id]
+builtin_integer_type_widths( //dir=type
+ int id: @builtin_integer_type ref,
+ int width: int ref
+);
+
+dictionary_types( //dir=type
+ unique int id: @dictionary_type,
+ int key_type: @type_or_none ref,
+ int value_type: @type_or_none ref
+);
+
+@local_archetype_type =
+ @element_archetype_type
+| @opened_archetype_type
+;
+
+@nominal_type =
+ @class_type
+| @enum_type
+| @protocol_type
+| @struct_type
+;
+
+opaque_type_archetype_types( //dir=type
+ unique int id: @opaque_type_archetype_type,
+ int declaration: @opaque_type_decl_or_none ref
+);
+
+pack_archetype_types( //dir=type
+ unique int id: @pack_archetype_type
+);
+
+primary_archetype_types( //dir=type
+ unique int id: @primary_archetype_type
+);
+
+@unary_syntax_sugar_type =
+ @array_slice_type
+| @optional_type
+| @variadic_sequence_type
+;
+
+#keyset[id]
+unary_syntax_sugar_types( //dir=type
+ int id: @unary_syntax_sugar_type ref,
+ int base_type: @type_or_none ref
+);
+
+array_slice_types( //dir=type
+ unique int id: @array_slice_type
+);
+
+bound_generic_class_types( //dir=type
+ unique int id: @bound_generic_class_type
+);
+
+bound_generic_enum_types( //dir=type
+ unique int id: @bound_generic_enum_type
+);
+
+bound_generic_struct_types( //dir=type
+ unique int id: @bound_generic_struct_type
+);
+
+class_types( //dir=type
+ unique int id: @class_type
+);
+
+element_archetype_types( //dir=type
+ unique int id: @element_archetype_type
+);
+
+enum_types( //dir=type
+ unique int id: @enum_type
+);
+
+opened_archetype_types( //dir=type
+ unique int id: @opened_archetype_type
+);
+
+optional_types( //dir=type
+ unique int id: @optional_type
+);
+
+protocol_types( //dir=type
+ unique int id: @protocol_type
+);
+
+struct_types( //dir=type
+ unique int id: @struct_type
+);
+
+variadic_sequence_types( //dir=type
+ unique int id: @variadic_sequence_type
+);
+
+@accessor_or_none =
+ @accessor
+| @unspecified_element
+;
+
+@argument_or_none =
+ @argument
+| @unspecified_element
+;
+
+@associated_type_decl_or_none =
+ @associated_type_decl
+| @unspecified_element
+;
+
+@ast_node_or_none =
+ @ast_node
+| @unspecified_element
+;
+
+@availability_info_or_none =
+ @availability_info
+| @unspecified_element
+;
+
+@availability_spec_or_none =
+ @availability_spec
+| @unspecified_element
+;
+
+@brace_stmt_or_none =
+ @brace_stmt
+| @unspecified_element
+;
+
+@captured_decl_or_none =
+ @captured_decl
+| @unspecified_element
+;
+
+@case_label_item_or_none =
+ @case_label_item
+| @unspecified_element
+;
+
+@case_stmt_or_none =
+ @case_stmt
+| @unspecified_element
+;
+
+@closure_expr_or_none =
+ @closure_expr
+| @unspecified_element
+;
+
+@condition_element_or_none =
+ @condition_element
+| @unspecified_element
+;
+
+@decl_or_none =
+ @decl
+| @unspecified_element
+;
+
+@enum_element_decl_or_none =
+ @enum_element_decl
+| @unspecified_element
+;
+
+@expr_or_none =
+ @expr
+| @unspecified_element
+;
+
+@file_or_none =
+ @file
+| @unspecified_element
+;
+
+@function_or_none =
+ @function
+| @unspecified_element
+;
+
+@generic_type_decl_or_none =
+ @generic_type_decl
+| @unspecified_element
+;
+
+@generic_type_param_decl_or_none =
+ @generic_type_param_decl
+| @unspecified_element
+;
+
+@generic_type_param_type_or_none =
+ @generic_type_param_type
+| @unspecified_element
+;
+
+@initializer_or_none =
+ @initializer
+| @unspecified_element
+;
+
+@key_path_component_or_none =
+ @key_path_component
+| @unspecified_element
+;
+
+@location_or_none =
+ @location
+| @unspecified_element
+;
+
+@macro_role_or_none =
+ @macro_role
+| @unspecified_element
+;
+
+@module_decl_or_none =
+ @module_decl
+| @unspecified_element
+;
+
+@nominal_type_decl_or_none =
+ @nominal_type_decl
+| @unspecified_element
+;
+
+@opaque_type_decl_or_none =
+ @opaque_type_decl
+| @unspecified_element
+;
+
+@opaque_value_expr_or_none =
+ @opaque_value_expr
+| @unspecified_element
+;
+
+@param_decl_or_none =
+ @param_decl
+| @unspecified_element
+;
+
+@pattern_or_none =
+ @pattern
+| @unspecified_element
+;
+
+@pattern_binding_decl_or_none =
+ @pattern_binding_decl
+| @unspecified_element
+;
+
+@precedence_group_decl_or_none =
+ @precedence_group_decl
+| @unspecified_element
+;
+
+@protocol_decl_or_none =
+ @protocol_decl
+| @unspecified_element
+;
+
+@protocol_type_or_none =
+ @protocol_type
+| @unspecified_element
+;
+
+@stmt_or_none =
+ @stmt
+| @unspecified_element
+;
+
+@stmt_condition_or_none =
+ @stmt_condition
+| @unspecified_element
+;
+
+@string_literal_expr_or_none =
+ @string_literal_expr
+| @unspecified_element
+;
+
+@tap_expr_or_none =
+ @tap_expr
+| @unspecified_element
+;
+
+@type_or_none =
+ @type
+| @unspecified_element
+;
+
+@type_alias_decl_or_none =
+ @type_alias_decl
+| @unspecified_element
+;
+
+@type_expr_or_none =
+ @type_expr
+| @unspecified_element
+;
+
+@type_repr_or_none =
+ @type_repr
+| @unspecified_element
+;
+
+@value_decl_or_none =
+ @unspecified_element
+| @value_decl
+;
+
+@var_decl_or_none =
+ @unspecified_element
+| @var_decl
+;
diff --git a/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/upgrade.properties b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/upgrade.properties
new file mode 100644
index 00000000000..60c3adffe85
--- /dev/null
+++ b/swift/downgrades/be2357fd0023261478871eff5df5c57df559aa3b/upgrade.properties
@@ -0,0 +1,11 @@
+description: Remove `ExtracFunctionIsolationExpr`, `CurrentContextIsolationExpr`, `ActorIsolationErasureExpr` and `UnreachableExpr`.
+compatibility: backwards
+
+current_context_isolation_exprs.rel: delete
+extract_function_isolation_exprs.rel: delete
+actor_isolation_erasure_exprs.rel: delete
+unreachable_exprs.rel: delete
+unspecified_elements.rel: run downgrade.ql new_unspecified_elements
+unspecified_element_children.rel: run downgrade.ql new_unspecified_element_children
+implicit_conversion_exprs.rel: run downgrade.ql new_implicit_conversion_exprs
+expr_types.rel: run downgrade.ql new_expr_types
diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h
index 7d3a670be6a..6c7e2309e84 100644
--- a/swift/extractor/infra/SwiftTagTraits.h
+++ b/swift/extractor/infra/SwiftTagTraits.h
@@ -175,8 +175,8 @@ MAP(swift::Expr, ExprTag)
MAP(swift::LinearFunctionExtractOriginalExpr, LinearFunctionExtractOriginalExprTag)
MAP(swift::LinearToDifferentiableFunctionExpr, LinearToDifferentiableFunctionExprTag)
MAP(swift::ABISafeConversionExpr, AbiSafeConversionExprTag) // different acronym convention
- MAP(swift::ActorIsolationErasureExpr, void) // TODO swift 6.0
- MAP(swift::UnreachableExpr, void) // TODO swift 6.0
+ MAP(swift::ActorIsolationErasureExpr, ActorIsolationErasureExprTag)
+ MAP(swift::UnreachableExpr, UnreachableExprTag)
MAP(swift::ExplicitCastExpr, ExplicitCastExprTag)
MAP(swift::CheckedCastExpr, CheckedCastExprTag)
MAP(swift::ForcedCheckedCastExpr, ForcedCheckedCastExprTag)
@@ -202,8 +202,8 @@ MAP(swift::Expr, ExprTag)
MAP(swift::ConsumeExpr, ConsumeExprTag)
MAP(swift::MaterializePackExpr, MaterializePackExprTag)
MAP(swift::SingleValueStmtExpr, SingleValueStmtExprTag)
- MAP(swift::ExtractFunctionIsolationExpr, void) // TODO swift 6.0
- MAP(swift::CurrentContextIsolationExpr, void) // TODO swift 6.0
+ MAP(swift::ExtractFunctionIsolationExpr, ExtractFunctionIsolationExprTag)
+ MAP(swift::CurrentContextIsolationExpr, CurrentContextIsolationExprTag)
MAP(swift::Decl, DeclTag)
MAP(swift::ValueDecl, ValueDeclTag)
MAP(swift::TypeDecl, TypeDeclTag)
@@ -335,7 +335,7 @@ MAP(swift::TypeBase, TypeTag)
MAP(swift::PackExpansionType, PackExpansionTypeTag)
MAP(swift::PackElementType, PackElementTypeTag)
MAP(swift::TypeVariableType, void) // created during type checking and only used for constraint checking
- MAP(swift::ErrorUnionType, void) // TODO swift 6.0
+ MAP(swift::ErrorUnionType, void) // created during type checking and only used for constraint checking
MAP(swift::SugarType, SugarTypeTag)
MAP(swift::ParenType, ParenTypeTag)
MAP(swift::TypeAliasType, TypeAliasTypeTag)
diff --git a/swift/extractor/translators/ExprTranslator.cpp b/swift/extractor/translators/ExprTranslator.cpp
index 2da23e9c0af..915d26b3373 100644
--- a/swift/extractor/translators/ExprTranslator.cpp
+++ b/swift/extractor/translators/ExprTranslator.cpp
@@ -671,4 +671,18 @@ codeql::MaterializePackExpr ExprTranslator::translateMaterializePackExpr(
return entry;
}
+codeql::ExtractFunctionIsolationExpr ExprTranslator::translateExtractFunctionIsolationExpr(
+ const swift::ExtractFunctionIsolationExpr& expr) {
+ auto entry = createExprEntry(expr);
+ entry.function_expr = dispatcher.fetchLabel(expr.getFunctionExpr());
+ return entry;
+}
+
+codeql::CurrentContextIsolationExpr ExprTranslator::translateCurrentContextIsolationExpr(
+ const swift::CurrentContextIsolationExpr& expr) {
+ auto entry = createExprEntry(expr);
+ entry.actor = dispatcher.fetchLabel(expr.getActor());
+ return entry;
+}
+
} // namespace codeql
diff --git a/swift/extractor/translators/ExprTranslator.h b/swift/extractor/translators/ExprTranslator.h
index 5dec909b1b2..ff3db137b3b 100644
--- a/swift/extractor/translators/ExprTranslator.h
+++ b/swift/extractor/translators/ExprTranslator.h
@@ -125,6 +125,10 @@ class ExprTranslator : public AstTranslatorBase {
codeql::CopyExpr translateCopyExpr(const swift::CopyExpr& expr);
codeql::ConsumeExpr translateConsumeExpr(const swift::ConsumeExpr& expr);
codeql::MaterializePackExpr translateMaterializePackExpr(const swift::MaterializePackExpr& expr);
+ codeql::ExtractFunctionIsolationExpr translateExtractFunctionIsolationExpr(
+ const swift::ExtractFunctionIsolationExpr& expr);
+ codeql::CurrentContextIsolationExpr translateCurrentContextIsolationExpr(
+ const swift::CurrentContextIsolationExpr& expr);
private:
void fillClosureExpr(const swift::AbstractClosureExpr& expr, codeql::ClosureExpr& entry);
diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list
index 32734851515..61bc11662f5 100644
--- a/swift/ql/.generated.list
+++ b/swift/ql/.generated.list
@@ -111,6 +111,7 @@ lib/codeql/swift/elements/decl/internal/SubscriptDeclConstructor.qll 67882596f38
lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll 3924b6e5bee007fd62ae4b2352e38ae20292dbdab65fd1724ca9cd698bfc88f4 28ac8627c75cd787e6dca1a8bfed4c36edbfd13cdad19a08905a49d56b815ad7
lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll 1dc3d7ef11adf5fb9b4be1c824b8a49393137071584ed44224a2f47b3a0b8a4a 2e1e8222b851376b0d7843a93fb6affeac7f8ee52867623b1e2fa99c1ac37dbb
lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll 62c6b231898c42a7756cae20ed9b3818958872cb581cca6f1db0b28e4cff9b93 b90f7496229e76a40ac66e8a3d0ac2f14c65d729ebeea796cb34f395f2858b32
+lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll bbbc615255877e7fd95199710449fa696d68d81a4cfb985240d0cfbf124d9d37 526e7b4f2b5af5f2c8172b5d2c76c1f7198025e02c9e1068f92fa6c78cddeb81
lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll 3388c1ad2c9d984fb0a0368ef9090f03cc5bbd63088024308a056cabfb9c93c9 49e3450180b8a4626911fc83bd64d17e486fad6b50f33b55b9322faef1ced39f
lib/codeql/swift/elements/expr/AnyTryExpr.qll 1edad5f25c3e36412e4d93b3a5f6d1886670c353837c7bd9477351136ea4d743 58f5a8d11b5b5aea41cc5c513e2f594bc418e979f27aa0a44ddc3340aba50f95
lib/codeql/swift/elements/expr/AppliedPropertyWrapperExpr.qll 83c08f24e715393c8e9a9434ab53556f38965a750ee1c8b145df03435e8bf41c ad70842a93f26d70b1a9400039c4446b75302a3005e3b44905cefd44c57c46af
@@ -143,6 +144,7 @@ lib/codeql/swift/elements/expr/ConsumeExpr.qll cf1551b82e4dd28555778f4092a90f917
lib/codeql/swift/elements/expr/CopyExpr.qll ff680438de3b2105d4fd69f48879eaa954436e63809b045f766d50454436f88a 1e0781d35da6d31bdd66110e3ce4d5dce46cf7b9e4b285ed5f544c8d40945639
lib/codeql/swift/elements/expr/CovariantFunctionConversionExpr.qll 4acc70bae3a6d31798a505be6604e1bee00770b7d385ea44550d4c0e5db35477 d6f852d2d11a78ea7c188379ad474db8d77494e3a3621dca1b7d963e083374d3
lib/codeql/swift/elements/expr/CovariantReturnConversionExpr.qll d6856a3986eb1421c0676d046432657a52e4c77775fd7c437090cfa8ade3ee29 b8229608a404e5f310a329568a26994eca0361f0653aefdb495351fbefaa5a97
+lib/codeql/swift/elements/expr/CurrentContextIsolationExpr.qll 1500722bc7ae42c524d1b1cf578befcea69bea5c7a24280af07c911dbdb31e8c 567366f4d3642e183dff1d8bfad3bea433fd6ea37b841faaaa25c21ca0654289
lib/codeql/swift/elements/expr/DeclRefExpr.qll 4d7eb8f70aa18d35cde805a310b836d702c8c9da55e9676f8db3338dc57e8034 c6136ccf37e8128640d9df423713b7646309e51c3eda5c6d2807fdb0cc0733e2
lib/codeql/swift/elements/expr/DefaultArgumentExpr.qll d655cc4c69db37dc20c477e72df9bb53e18dcc65ffefe61a1bca1854bc006210 a8af422bfdcf56ac37a322d707252ed34b08acf58608065ff3bd214137583b13
lib/codeql/swift/elements/expr/DerivedToBaseExpr.qll d42b72fe5c4a36830c9c7b6c929992fb18dabeedda448159822770256593f274 fc6240a71dbd554f8bcc86c2ad0b05f2112578223e9a180beeb0223bf9cc76be
@@ -164,6 +166,7 @@ lib/codeql/swift/elements/expr/ExistentialMetatypeToObjectExpr.qll d594531b0f9ce
lib/codeql/swift/elements/expr/ExplicitCastExpr.qll 2298ed1952b7d6454d6da53f79a5460987fea4c30317187799fd425d0a013e4f bc4007c1521fbaa9811d6a893a2eea9901f3b1bff2e89a201d416c067e5b2e32
lib/codeql/swift/elements/expr/ExplicitClosureExpr.qll bdfa54ebd6bf8bb872cad5a04f57a78c63f9a92ab282d845bf654a45da0cad97 1071c526a7d263151ce9de155d43245dddce33d168b6520f49c96908e91fb256
lib/codeql/swift/elements/expr/Expr.qll ae02fbaaf676b1418a047da363a4a61174ba5aba08b229b4f6ba5b3fb96c1edd ff9c4d4d274cceeb178d85a469791833b60a89b06dc4df4678932d6ea7a799ee
+lib/codeql/swift/elements/expr/ExtractFunctionIsolationExpr.qll 3b557d7e0c8d340e30ff22b22a1f7eb5a7ccb3e278835f1968627c5174cb530a dc25ac7455be2c622e588855a572c49b31e3cdf8900fc83ee79ff40a5e1c4687
lib/codeql/swift/elements/expr/FloatLiteralExpr.qll f80be9eea21297f891761284da66c690706b188aadf824641a27446c1b914789 5c6a0ea847a688a33acb6e12713b9d9f33218148e6a51e80b57b3e0e4543ffae
lib/codeql/swift/elements/expr/ForceTryExpr.qll 087b6e8ee24d6956cd63adf3e82d89e37d0482c7ba19c2b69af557d1962fdd62 233e166748af3d0f1efb265cd6b15c9960df841fabd6a8eb54744b53d897b35f
lib/codeql/swift/elements/expr/ForceValueExpr.qll 397cfd523b3791684482c55a130629d10fd3d993ffe21e8e2d6e7b0295881e54 4a3ecd15296c661d9ebcccaa75f742fdb10056614e0f0ac6085571951b580d6a
@@ -229,6 +232,7 @@ lib/codeql/swift/elements/expr/TupleExpr.qll 11efe0f2737b561a392bbd684c7c1cc2e29
lib/codeql/swift/elements/expr/TypeExpr.qll c3f7272b77aadd8a4a0e5c7e3876bba6bba45343415c8ce96de26e1e898d11c0 91cd440b768e4d9aa60a165ddb62ecdcad85eb4a676ab0d60ca8777e753bffc7
lib/codeql/swift/elements/expr/UnderlyingToOpaqueExpr.qll f319daff97d13a5cacf2efcd1f2b77e58ec9b9a30413ddb30cc0333197cbef9f 9c6a97a66a452a6167b26f48b0f31a42e2c528fcd30e76c9f4dd146f6609b5d3
lib/codeql/swift/elements/expr/UnevaluatedInstanceExpr.qll 7eca15f753e81d99a275ca1d29986d5209d8ffea4034746945227fedc1b74c38 714c9a7a09f525187f53a4c9599a141a32ec6071c405c2a425dc2cfb6f2457e6
+lib/codeql/swift/elements/expr/UnreachableExpr.qll 930822d66d99422603725161f55fec7b861ef33aa8fe57afbdbea2a68a764fcb e8005f5ac66a97e614f3792e8053b0fb6d6bb1f99bc1d0f7d0d0b41e703efe9c
lib/codeql/swift/elements/expr/UnresolvedDeclRefExpr.qll 356dacb2b2ece20366a2d4b809210aeedcec31b8362a204854a77a192a01c0e1 7705b39752be30ab6bff12ccc690ed3b0fd843978721558e18f5f57e65f1f688
lib/codeql/swift/elements/expr/UnresolvedDotExpr.qll 97c05188380cb890049db519d70168c3ca69c356fd15efd1ec52555519518a68 01455fb6e2c57941b209d844b65a0e6778d2d8d3db6081fb96c375c528574c41
lib/codeql/swift/elements/expr/UnresolvedMemberChainResultExpr.qll 2a5747bdd60c30b9b32552ef48a1ba94bfa4c593896d7e1ba1992403680d10af c92cfd85209a0314b99a2f8549c73eb878ab251453330298da72aa9d2208e7ac
@@ -239,6 +243,8 @@ lib/codeql/swift/elements/expr/UnresolvedTypeConversionExpr.qll e259a187d70ea6b6
lib/codeql/swift/elements/expr/VarargExpansionExpr.qll c7d7574caaac88fd73e69e82a84ca924e078eece0fd85a476b4a831e23b425f9 27213c88f864b7f8fd73edf8951e04a5ae7a57140a387df7c03dc1544ced723b
lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprConstructor.qll de9d2daf68b754e783374d017116606c8cd0710dbf8989d3606939e977dc672c 63c5ddb9da56da2c9637d7a0a6d9d069f745b4c095b07c9494a0b3a7e11be95b
lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprImpl.qll 6b2c51a5a5dd17044c6f5510048a9a2187aac9d35a70541faa9400406e35bc1e 448c23eec2ef44bd90e6c1636e3e881ca3447198eb68b8261412f42c4995b766
+lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprConstructor.qll da71e5e88434f620484b792075c4966758721b46a20834c296ae77be587a8952 aafac69f37c3fd8b7d0973ca616bba30833b00d64639c3d6b7fb2e86d212406d
+lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprImpl.qll e9b2498761c33cd765566978dbb789637e04549bdb967a1948cb6518435bfa7b 3d7b115e8d40fe1ab1fe7375493d991e51b4689b8565dde4beb6181ce7ea44ba
lib/codeql/swift/elements/expr/internal/AnyHashableErasureExprConstructor.qll a1a1b5b5cb85202756826d5858b336fa2c06859020084695f6182dff999993ed bc9aab20cb809516512ddca305e2d107c2b2d2f5850620fe53af021145bde247
lib/codeql/swift/elements/expr/internal/AnyHashableErasureExprImpl.qll c1a0516ad5176f00347f7a5187f3c521746066235eb3f3bdd6f1ec068180d9f1 cb0d36379fff2483e30e54e75d8b63dc92669e8a129c8fcb24495cfad6456cfc
lib/codeql/swift/elements/expr/internal/AnyTryExprImpl.qll 8225177728e36e4cdab514d060052b7174e99146ddfeb1a0cacbaab5bcd7f7a4 074ee2100466303ee268fbe50a3c4d4f93d920b24e17e1a2c60c9f7d3e7b46c2
@@ -284,6 +290,8 @@ lib/codeql/swift/elements/expr/internal/CovariantFunctionConversionExprConstruct
lib/codeql/swift/elements/expr/internal/CovariantFunctionConversionExprImpl.qll 499b77c2820d42739843665a7574e47e630d3afd125cb4cbb4952d7fe6fde867 fe7d197f25786e329235756a85a90faec82273e097896224bd64f8fb4a804bd9
lib/codeql/swift/elements/expr/internal/CovariantReturnConversionExprConstructor.qll 5328580363441c1d76c8ba2654448207f581bc9af4b612b78c2522dceb1accea 687f9b1a9c57f0364893df2812472de0d32e5faed37d34ca429fcea2f9fa2857
lib/codeql/swift/elements/expr/internal/CovariantReturnConversionExprImpl.qll 750189e344195f715d09e93e772d5cf3a611a6d1895b7e4a88db4abfe0a5dc8a 8f646de70cb489f46bcc295e4b4a3bd7b8f03e3691c444c1f80b34453b65274c
+lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprConstructor.qll 153c80058a025e57375acb36938a44aa0b959772e2864e83e4fb48e9aacf63d2 bea25c65c5a16be09765ab7fe9db37190c18f778878a16cbec92c47f9d25159d
+lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprImpl.qll 56b1efc50878f99474c7e5dc5525d7ba98f857112b5fe29926feb2f112d4416c efde63d7e72635f8027b04990eb40bf494fc14215e6ab08316c73b6caa0e49fb
lib/codeql/swift/elements/expr/internal/DeclRefExprConstructor.qll 70bd400520a0c5f29494c320184468d36075cf24feb1f6393fc430b47a2cd336 0d3419d85b0a62cc3c8f0f0cb3a4e9a09d250f2e8b99fb11b96e18f584f817a7
lib/codeql/swift/elements/expr/internal/DefaultArgumentExprConstructor.qll 31f4def20cb3b60b48eae9b24022f853dc490c2282368fbd8f89e2c689963f86 45dd0dc08a1c4729178b80c4027ad98cba5258ea31e11f0936a8fa9bde8d3b3b
lib/codeql/swift/elements/expr/internal/DerivedToBaseExprConstructor.qll d258b88fff4f115e9b4c7ef4cb26623787732cf0d7cf9b59da273d8ebcdb9460 a0a3615be242c3b52624423d685bea3b1f57ebedb2dba51059acc33e2da49844
@@ -311,6 +319,8 @@ lib/codeql/swift/elements/expr/internal/ErrorExprImpl.qll 819ddf5500b362c2b48ae9
lib/codeql/swift/elements/expr/internal/ExistentialMetatypeToObjectExprConstructor.qll 338043a69b96c85913ac5ae02efb7fa363bb97ef33f1caab4253f1146f4a0e2b 0e66776ca92ebc6ab5b3cbc2b4e7fca382436279dacd5bf9f742b6e0c2150ab0
lib/codeql/swift/elements/expr/internal/ExistentialMetatypeToObjectExprImpl.qll 50104bc5721fbd13e1b22639b1a8e1114c0691297c808926c73f5257e55fd4f6 38b634dc13cdbabe0f7195e2a399c7370522b7fc8a56a3a9c53e8928b0742100
lib/codeql/swift/elements/expr/internal/ExplicitClosureExprConstructor.qll fe430a5f87fdb10a4354f699437150bda543ae7b2d09879e50c0498239417a4b f8ea635fe9ab01d48a52f135079a34689a648a4c279bddaf8def56ed014868b7
+lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprConstructor.qll 5f940fa3982695f409225cc81dd89140aa35d396ba93ae88a370167e3e1ebdc2 b6c3085b5d7fed62660b57578537fb9ad7bde1a564b832e1eee7845a813e76be
+lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprImpl.qll edaad600821c5534b3b2c1a642c9d36b2c1ac406d97334ab7c1e4d934f188614 02e36137fcd5b64d1a89950a01ed129dc28034cf64310d333c06bc581ac9472e
lib/codeql/swift/elements/expr/internal/FloatLiteralExprConstructor.qll b6a507af69777dc3e333e1346a3f93b4398551608f6789de562c2b57f1f5bb67 fe2eb2aacb3d4c3d2fa5476199512d5e1ce6aca6d2605dc94445e127ee2f3b08
lib/codeql/swift/elements/expr/internal/ForceTryExprConstructor.qll 159e084ab5e6fdbcd45b0ec0d4915121e8f425d764e8787df053e8a0b8fb6137 ebd9c1eb6c5029eef2ee6bb307e15f1eaf2e5db1fa97565cd04386b584b56674
lib/codeql/swift/elements/expr/internal/ForceValueExprConstructor.qll 1c85f4d1d06f46f8c992ca13e32de8bc2c682d04a550ccec026ea301307ce2ef a89cf5fdd2063318244d42e73ddbe0e235bd76dcf35e54ace58f098d217e94d7
@@ -401,6 +411,8 @@ lib/codeql/swift/elements/expr/internal/UnderlyingToOpaqueExprConstructor.qll 8b
lib/codeql/swift/elements/expr/internal/UnderlyingToOpaqueExprImpl.qll cf2637b44a96fce2d8e618469692305181490a28f3b2698b6f9db2d58e7c474d 9b062defb7c19e217bea6e5bd65ccf28e1ff25fb1e784405eb92406806a3349c
lib/codeql/swift/elements/expr/internal/UnevaluatedInstanceExprConstructor.qll 4560f4737cb47512b8348fd2a37599227df4a05bfad84873f6666d121a524e0a b49bfdfa550330bab087c5a6b7a3885fd22360e557adf984ce7a35534d882510
lib/codeql/swift/elements/expr/internal/UnevaluatedInstanceExprImpl.qll 35107b79b01c1304167ce211e081991a2a8e05e9831da7d6523363d59a9dbb7a bc4811a0b40380b1a065f64dbd4b4f756e80cb11ee3b5c4f6ce035c5629db852
+lib/codeql/swift/elements/expr/internal/UnreachableExprConstructor.qll 53ff660f143f073f2675c37e2a471b79b82864051a3f5305faf33cd642904d3e 35d37b022f6c6f0b1d6483a2698c2e08f0bd545fd573edbf642815ad7d34bafd
+lib/codeql/swift/elements/expr/internal/UnreachableExprImpl.qll 3c305339fb8eef3b521638164290d630fc166106006a634c7ccec2198a4cb035 7ff8f246f567689305a44b04e990f31cb696ad2533dbb8c40f1cf82e3e8100ff
lib/codeql/swift/elements/expr/internal/UnresolvedDeclRefExprConstructor.qll 344072439e0d95d1148d361ff764c17eaa47e5c0be82a3320cd9ab3868ac415f 25553a602da130b30e69ae9844e9be9da73ee579ba74c3bb84a9aa8e24801b46
lib/codeql/swift/elements/expr/internal/UnresolvedDotExprConstructor.qll 2945ae07a65a7262e97cb28d35b9c3a9dfee662f2af54a8d9aba5f0c49216190 297485aa44da7ce69c7e33bc3ffde66bee79615fa947159b76e6ed73d1886b25
lib/codeql/swift/elements/expr/internal/UnresolvedMemberChainResultExprConstructor.qll 1086b09aa950efd4e8ed1ce4723f6a6e6b43bbc147085375f589654f2dc04008 8adf6b2f415b69b8eb235c7e76eb5f0e5320939a0904d0b6823b28293eaa3b57
@@ -692,7 +704,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898
lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4
lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae
lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633
-lib/codeql/swift/elements.qll 8a9719dd149f539a01c4c8cbe93a15f221cc1dee388a500adada8facd6a92f57 8a9719dd149f539a01c4c8cbe93a15f221cc1dee388a500adada8facd6a92f57
+lib/codeql/swift/elements.qll 9648ab501b413dc327513d9ed1d6e620a9eab6096e1130dc7e78cd6a2b6b549b 9648ab501b413dc327513d9ed1d6e620a9eab6096e1130dc7e78cd6a2b6b549b
lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99
lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de
lib/codeql/swift/generated/AvailabilitySpec.qll bc64d5c690c4d18800f0a48cc76a6a9ee4f832041343666da2d8df2aae04ed7e d03bf874293ac0ab09c025f75c0f392473d47bebe3223143adcc13882a366119
@@ -709,12 +721,12 @@ lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fd
lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa
lib/codeql/swift/generated/MacroRole.qll 0d8fa6b0b6e2045d9097a87d53888cae2ea5371b2fa7d140341cf206f575b556 ea3b8a7c0a88851809f9a5a5aa80b0d2da3c4779bb29044cdba2b60246a2722c
lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f
-lib/codeql/swift/generated/ParentChild.qll bafa2e366c0df25d6c26c4e2e2b84f3e363524d7abcf0f6e31e42879f2bc664a 616160f5664f77346992c2ac39e3229abdf186fe707066d4895ceddd148749a9
+lib/codeql/swift/generated/ParentChild.qll 7c9537f74a4c5a02622ce28c3de4b0ce02a7027d2e9aea9a860ece6a1e2ec340 49c1993b2a96df66903bffde78d63d8f4c68b2d604c419b20d88b63406366156
lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec
lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4
-lib/codeql/swift/generated/Raw.qll 4f2ddadd2ced9728aaf4595ccf85cd147468d7ad0a57a21a6cbfd04e3834b386 9653595693da55953d7743fbecce33d16910e3b6737c654311f1e34d27ad7f0b
-lib/codeql/swift/generated/Synth.qll 31e318c6e156848c85a2a2664695b48b5e93c57c9bb22fa29d027069907b3ab0 8655ffcf772f55284b93f1d7f8e1b3d497a9744d5f2e0c17bc322c1fdf8bdba8
-lib/codeql/swift/generated/SynthConstructors.qll 3e53c7853096020219c01dae85681fe80b34938d198a0ff359a209dda41c5ed7 3e53c7853096020219c01dae85681fe80b34938d198a0ff359a209dda41c5ed7
+lib/codeql/swift/generated/Raw.qll 522f8500ce46d62fca22730ade5fa4716452adece25ffc36c50582b653f2fe6f 4d870e0695fff541c1a14eadc8ba51960a264ba2e6e53d0ccc32b34c7fd2cadd
+lib/codeql/swift/generated/Synth.qll a14dddab40979df82d30b2d73407fe0058a803ed6e1a882cd9a6ae5ffd240526 0879d2476a42123b46eee216d4ea03523e0c04fe0b68d9a68e0046253edb1bc9
+lib/codeql/swift/generated/SynthConstructors.qll f64121911e082aa15478eb8779025cee96e97503724c02aff31741e65a894a4b f64121911e082aa15478eb8779025cee96e97503724c02aff31741e65a894a4b
lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d
lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd
lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022
@@ -762,6 +774,7 @@ lib/codeql/swift/generated/decl/TypeDecl.qll 92f74709cce7e9f0f713598d3b20b730475
lib/codeql/swift/generated/decl/ValueDecl.qll d3b9c241fd6cb1ce8274435c0242775c28c08f6a47caae01ad1ecd38897b2cd5 bc81291b1394b47972d7b75b6a767ed847f881932a7d9345d28d161a55b66bd1
lib/codeql/swift/generated/decl/VarDecl.qll 8978a73fa2d7a9f952b68a2638788eda857e62502311a33fa6de1dad49a6cb1c b8b6c8cf6773056c3a90494754b0a257dcae494c03d933f138ece7f531fb9158
lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll 9d8f0f895a5e1abb89bed9671a9b398e48eca4664eb10b4b41263eb2a29bb2cf 4f65b8e62876664a357433f886baccaf40e4bf7e9ca7eebeb9f5d999354578f9
+lib/codeql/swift/generated/expr/ActorIsolationErasureExpr.qll 0ebade7950363d63a3d0e86877174e763522ba5119253ec6b9dbf6506ab7ab6d a5a94ef22d198b7325c8dda3ca380c600f4f0147534fc1b12e57fd19e4e63961
lib/codeql/swift/generated/expr/AnyHashableErasureExpr.qll e9040afb7bf3d2d79fe931aa98f565bf1b8ad4ba56a9f2ee579e61afa7c50719 1e6e4fa2519522a117b7ca05c060f060376974a4148cbad38bb238ac432509c6
lib/codeql/swift/generated/expr/AnyTryExpr.qll 32b5df81d686959183af42c0ba30976360f3062bd6279b88d8578ac010740b24 b8a78d4e06d7160b83b31bbd033e4697f607bd6ea294f2e0dbbe96a0c665014d
lib/codeql/swift/generated/expr/AppliedPropertyWrapperExpr.qll a272cddf6e161406a886a779939a88b4536eace5579ac6930f1b5f7c234c6525 1c93e30d1850fb3be09cc250f4e645b8c36878c7ea3d028bc06a3255f764605d
@@ -794,6 +807,7 @@ lib/codeql/swift/generated/expr/ConsumeExpr.qll 86c90b17fb5fded8852088703418132f
lib/codeql/swift/generated/expr/CopyExpr.qll 026c323ebb0ac57814041a73b6c5933501902f744f6d2e971dbc2b39bb987be3 be20d88f5d6f8771a1d0d0af6316ccfd51994dcfaee2a2ee47cb7ef132f8e6b7
lib/codeql/swift/generated/expr/CovariantFunctionConversionExpr.qll 53f906b1ff6c3994829881098d070a92df2ee86242f7636401acfa4c8a0a1e9c 98a5f7949f02f5fc2aee38e2eed2feef677b6f2daa2d244fe790baca347a9db3
lib/codeql/swift/generated/expr/CovariantReturnConversionExpr.qll 68bf0f1a97f6a1bd2a99c60fa09d930cbd427679bbe0f41ae4394b1ad4ba126d c1063eb981345c73b871292218b40308ee5c12babc80b5d63b337eb67628d7a9
+lib/codeql/swift/generated/expr/CurrentContextIsolationExpr.qll d5d82951e4aff875c5229daec9f18a3261fb236e326234eadccd7ee5c87a83e0 c76f2fa71e422cbe2dfa39588d1dcaa4e50266fc3102a446fb76386f198601ee
lib/codeql/swift/generated/expr/DeclRefExpr.qll 9a696dc79181a2ebe76e2ad47edc27baac49a9c8ed38e164e5c8c61a81c23865 adcde2929271268d08550848d8c04911aec790af10609e387ea07e80bee0de6f
lib/codeql/swift/generated/expr/DefaultArgumentExpr.qll a9bd89e69f35b04932a89be8099cdb0a4ce65df579d3b88d4cf6f5c328b9f327 16d22db992c2fae4abec569e10be32526883610eea7f90f19c73297168fa63fb
lib/codeql/swift/generated/expr/DerivedToBaseExpr.qll 2b744875e4d12988992222cec5e5c16d65b98dca45a375c436ac5811dff4c19f 536407ce6e380d80bf8fd9d16498a773fba828cf7fa2d43f88a7ec38312f953f
@@ -816,6 +830,7 @@ lib/codeql/swift/generated/expr/ExistentialMetatypeToObjectExpr.qll f6eb63b5887d
lib/codeql/swift/generated/expr/ExplicitCastExpr.qll 2830522bd17122c26a2392405b2c160ff29ebe8cb0aa8d21498a2b0f05ce9858 bc96f19c0bcb36e78c7f7c48c7d01dbdefaa20564a020e7baf2fc9d8abe734c2
lib/codeql/swift/generated/expr/ExplicitClosureExpr.qll e6fa08fad995b2cafb9d76482cc836e6a0fa24d1e055e848bf2df5acedd12a94 79730347c91ab01c480116c7feba97dafafc030c910e6664519fbc122201cf5b
lib/codeql/swift/generated/expr/Expr.qll 29581d27469f6abd06bb1c29cce142e8287f3a6eb7cb251fd14e832e6a6a4e6a 957d3f470d91e757b2921af49651b7c1a1eb111e74ff9ea12577d5df38714c64
+lib/codeql/swift/generated/expr/ExtractFunctionIsolationExpr.qll 87e5b3d76a64297787c4e9c63e5278f75f94df64acf6dce2cd12af52f071b90b 185ff557ef4f3efaccc696705282df74dda577063197cc8bc20bc8968993a1ff
lib/codeql/swift/generated/expr/FloatLiteralExpr.qll fb226de33de8ede0c3048aa5735f83feafa912d165a793e06e50d0d87165989c 0fb88029e576f444a9623b49294a5fb713bb0f38850e136378107dafcefb98a2
lib/codeql/swift/generated/expr/ForceTryExpr.qll da482d8440c5245dd4ea347e0d6c14cfb455f426055bb4e4c23cacae511a3a52 9c2ec46370708434337802dc62a07f24382cb3ea4499eafcf45ba8b503cbebf9
lib/codeql/swift/generated/expr/ForceValueExpr.qll 3660da045afe79bf7815519134278851a8852ca4a159cf54a2d4f2d413864471 4e7416dc69fb917f6cd304d992a6d0e4e7cd1b4ce16201c86cf3a53a58892635
@@ -883,6 +898,7 @@ lib/codeql/swift/generated/expr/TupleExpr.qll 860dde65c440ffa74648c663126194182c
lib/codeql/swift/generated/expr/TypeExpr.qll 1f38f463b11b9f10878dab7266f05f455a0802e6d7464d81d4c05855d41adc64 b3c3f6b61b466be86a8cc0cea18d85b7a23b1f8dcf876ef2a050ef69778df32b
lib/codeql/swift/generated/expr/UnderlyingToOpaqueExpr.qll 3d68175d73056e6f5afea5040ad2f9a8447adf078c490bb06769008857ee2ca7 f0ec8f0bf7271289b8be32038e60c2b1053d6563354c8bced53a42fef6292152
lib/codeql/swift/generated/expr/UnevaluatedInstanceExpr.qll bac438970bc12eef2ace318b97d37ef58ab7a9c2c43c3f4515780f65cdc5de70 11810cdd753c744f3ee274fce889d272c3c94b6087c124cdd09e99188eb3f926
+lib/codeql/swift/generated/expr/UnreachableExpr.qll ab17ea1f01eb1b22b1012b57582b170936244c98f42374e0e21b9d468db9249c 93a2a3685a9f8d4eab06cf700bc6465915e29b49249a14fe6aa68d1af96c86ca
lib/codeql/swift/generated/expr/UnresolvedDeclRefExpr.qll b6a72b3052829ac56f16b72baa7fc62926e8dde781ab9fa29b2cb7d87b5e287d df8fe19e9487c3ae83a19f38d98fd365add5b010ccab2f8699e4a2b841bb00a0
lib/codeql/swift/generated/expr/UnresolvedDotExpr.qll 78a6d4cf27b3b6012b9880cae52604c49e7300d1b02e9f7a9157705078423d7a 79ca200646616ddb17fb72112469985b18718cba676e3bd94d8bcb234627ea93
lib/codeql/swift/generated/expr/UnresolvedMemberChainResultExpr.qll 8277a5c54c868441217beab4b5f7f4bb937098611ce1e1fb098ad39f17660970 15996c1c571579db3e2ea861fa850294d916dde6ba437cabc6f18d18bcc6b785
@@ -1144,6 +1160,8 @@ test/extractor-tests/generated/expr/DynamicTypeExpr/MISSING_SOURCE.txt 35fb32ea5
test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql 426837e6acd80fd5c4f79f756919c99df132f6666aae9d07274c4b95711123bd 451393b79359a46070db84d8d35ad3c7f14cc20eddd3df2a70126575d2200297
test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql 9deff1a2a2271c2dbe44b2aeef42f9adadd73b0e09eb6d71c68ac5bd8d315447 bdc07aec1fa2ced3f8b4c2dcede0354b8943488acf13e559f882f01161172318
test/extractor-tests/generated/expr/ExplicitClosureExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
+test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql 7c4666a86e962726a505e76c57196483c6eb5259463a1cbdb6239f5ccbb33a13 2b5acd61e85a46b1c565104ba6f58b58813ffeba3548dacd776f72db552d5d65
+test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql 487c727c721ff925861b265d9a4f78029f04dba3b94e064529d89c7ee55ac343 3bfdadc09b8672b9030f43c2f0cab6395af803e79ddc17089c43c3da93d69979
test/extractor-tests/generated/expr/FloatLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/expr/ForceTryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/expr/ForceValueExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes
index ab478ec526b..32c1865ff30 100644
--- a/swift/ql/.gitattributes
+++ b/swift/ql/.gitattributes
@@ -113,6 +113,7 @@
/lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll linguist-generated
+/lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/AnyTryExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/AppliedPropertyWrapperExpr.qll linguist-generated
@@ -145,6 +146,7 @@
/lib/codeql/swift/elements/expr/CopyExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/CovariantFunctionConversionExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/CovariantReturnConversionExpr.qll linguist-generated
+/lib/codeql/swift/elements/expr/CurrentContextIsolationExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/DeclRefExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/DefaultArgumentExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/DerivedToBaseExpr.qll linguist-generated
@@ -166,6 +168,7 @@
/lib/codeql/swift/elements/expr/ExplicitCastExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/ExplicitClosureExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/Expr.qll linguist-generated
+/lib/codeql/swift/elements/expr/ExtractFunctionIsolationExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/FloatLiteralExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/ForceTryExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/ForceValueExpr.qll linguist-generated
@@ -231,6 +234,7 @@
/lib/codeql/swift/elements/expr/TypeExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/UnderlyingToOpaqueExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/UnevaluatedInstanceExpr.qll linguist-generated
+/lib/codeql/swift/elements/expr/UnreachableExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/UnresolvedDeclRefExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/UnresolvedDotExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/UnresolvedMemberChainResultExpr.qll linguist-generated
@@ -241,6 +245,8 @@
/lib/codeql/swift/elements/expr/VarargExpansionExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprImpl.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprConstructor.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/AnyHashableErasureExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/AnyHashableErasureExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/AnyTryExprImpl.qll linguist-generated
@@ -286,6 +292,8 @@
/lib/codeql/swift/elements/expr/internal/CovariantFunctionConversionExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/CovariantReturnConversionExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/CovariantReturnConversionExprImpl.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprConstructor.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/DeclRefExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/DefaultArgumentExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/DerivedToBaseExprConstructor.qll linguist-generated
@@ -313,6 +321,8 @@
/lib/codeql/swift/elements/expr/internal/ExistentialMetatypeToObjectExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/ExistentialMetatypeToObjectExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/ExplicitClosureExprConstructor.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprConstructor.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/FloatLiteralExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/ForceTryExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/ForceValueExprConstructor.qll linguist-generated
@@ -403,6 +413,8 @@
/lib/codeql/swift/elements/expr/internal/UnderlyingToOpaqueExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/UnevaluatedInstanceExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/UnevaluatedInstanceExprImpl.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/UnreachableExprConstructor.qll linguist-generated
+/lib/codeql/swift/elements/expr/internal/UnreachableExprImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/UnresolvedDeclRefExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/UnresolvedDotExprConstructor.qll linguist-generated
/lib/codeql/swift/elements/expr/internal/UnresolvedMemberChainResultExprConstructor.qll linguist-generated
@@ -764,6 +776,7 @@
/lib/codeql/swift/generated/decl/ValueDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/VarDecl.qll linguist-generated
/lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll linguist-generated
+/lib/codeql/swift/generated/expr/ActorIsolationErasureExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/AnyHashableErasureExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/AnyTryExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/AppliedPropertyWrapperExpr.qll linguist-generated
@@ -796,6 +809,7 @@
/lib/codeql/swift/generated/expr/CopyExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/CovariantFunctionConversionExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/CovariantReturnConversionExpr.qll linguist-generated
+/lib/codeql/swift/generated/expr/CurrentContextIsolationExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/DeclRefExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/DefaultArgumentExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/DerivedToBaseExpr.qll linguist-generated
@@ -818,6 +832,7 @@
/lib/codeql/swift/generated/expr/ExplicitCastExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/ExplicitClosureExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/Expr.qll linguist-generated
+/lib/codeql/swift/generated/expr/ExtractFunctionIsolationExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/FloatLiteralExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/ForceTryExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/ForceValueExpr.qll linguist-generated
@@ -885,6 +900,7 @@
/lib/codeql/swift/generated/expr/TypeExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/UnderlyingToOpaqueExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/UnevaluatedInstanceExpr.qll linguist-generated
+/lib/codeql/swift/generated/expr/UnreachableExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/UnresolvedDeclRefExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/UnresolvedDotExpr.qll linguist-generated
/lib/codeql/swift/generated/expr/UnresolvedMemberChainResultExpr.qll linguist-generated
@@ -1146,6 +1162,8 @@
/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql linguist-generated
/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql linguist-generated
/test/extractor-tests/generated/expr/ExplicitClosureExpr/MISSING_SOURCE.txt linguist-generated
+/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql linguist-generated
+/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql linguist-generated
/test/extractor-tests/generated/expr/FloatLiteralExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/ForceTryExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/ForceValueExpr/MISSING_SOURCE.txt linguist-generated
diff --git a/swift/ql/lib/change-notes/2025-04-14-new-entities.md b/swift/ql/lib/change-notes/2025-04-14-new-entities.md
new file mode 100644
index 00000000000..a0555d9cbda
--- /dev/null
+++ b/swift/ql/lib/change-notes/2025-04-14-new-entities.md
@@ -0,0 +1,6 @@
+---
+category: minorAnalysis
+---
+* Added AST nodes `ActorIsolationErasureExpr`, `CurrentContextIsolationExpr`,
+ `ExtracFunctionIsolationExpr` and `UnreachableExpr` that correspond to new nodes
+ added by Swift 6.0.
diff --git a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll
index f785bd0f278..3d2b33e8890 100644
--- a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll
@@ -1866,6 +1866,24 @@ module Exprs {
}
}
+ private class ExtractFunctionIsolationTree extends AstStandardPostOrderTree {
+ override ExtractFunctionIsolationExpr ast;
+
+ final override ControlFlowElement getChildNode(int i) {
+ i = 0 and
+ result.asAstNode() = ast.getFunctionExpr().getFullyConverted()
+ }
+ }
+
+ private class CurrentContextIsolationTree extends AstStandardPostOrderTree {
+ override CurrentContextIsolationExpr ast;
+
+ final override ControlFlowElement getChildNode(int i) {
+ i = 0 and
+ result.asAstNode() = ast.getActor().getFullyConverted()
+ }
+ }
+
module Conversions {
class ConversionOrIdentity =
Synth::TIdentityExpr or Synth::TExplicitCastExpr or Synth::TImplicitConversionExpr or
diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll
index 5d79bdf2d24..53d630d9f19 100644
--- a/swift/ql/lib/codeql/swift/elements.qll
+++ b/swift/ql/lib/codeql/swift/elements.qll
@@ -66,6 +66,7 @@ import codeql.swift.elements.decl.TypeDecl
import codeql.swift.elements.decl.ValueDecl
import codeql.swift.elements.decl.VarDecl
import codeql.swift.elements.expr.AbiSafeConversionExpr
+import codeql.swift.elements.expr.ActorIsolationErasureExpr
import codeql.swift.elements.expr.AnyHashableErasureExpr
import codeql.swift.elements.expr.AnyTryExpr
import codeql.swift.elements.expr.AppliedPropertyWrapperExpr
@@ -98,6 +99,7 @@ import codeql.swift.elements.expr.ConsumeExpr
import codeql.swift.elements.expr.CopyExpr
import codeql.swift.elements.expr.CovariantFunctionConversionExpr
import codeql.swift.elements.expr.CovariantReturnConversionExpr
+import codeql.swift.elements.expr.CurrentContextIsolationExpr
import codeql.swift.elements.expr.DeclRefExpr
import codeql.swift.elements.expr.DefaultArgumentExpr
import codeql.swift.elements.expr.DerivedToBaseExpr
@@ -119,6 +121,7 @@ import codeql.swift.elements.expr.ExistentialMetatypeToObjectExpr
import codeql.swift.elements.expr.ExplicitCastExpr
import codeql.swift.elements.expr.ExplicitClosureExpr
import codeql.swift.elements.expr.Expr
+import codeql.swift.elements.expr.ExtractFunctionIsolationExpr
import codeql.swift.elements.expr.FloatLiteralExpr
import codeql.swift.elements.expr.ForceTryExpr
import codeql.swift.elements.expr.ForceValueExpr
@@ -184,6 +187,7 @@ import codeql.swift.elements.expr.TupleExpr
import codeql.swift.elements.expr.TypeExpr
import codeql.swift.elements.expr.UnderlyingToOpaqueExpr
import codeql.swift.elements.expr.UnevaluatedInstanceExpr
+import codeql.swift.elements.expr.UnreachableExpr
import codeql.swift.elements.expr.UnresolvedDeclRefExpr
import codeql.swift.elements.expr.UnresolvedDotExpr
import codeql.swift.elements.expr.UnresolvedMemberChainResultExpr
diff --git a/swift/ql/lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll
new file mode 100644
index 00000000000..d49275490b8
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll
@@ -0,0 +1,13 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the public class `ActorIsolationErasureExpr`.
+ */
+
+private import internal.ActorIsolationErasureExprImpl
+import codeql.swift.elements.expr.ImplicitConversionExpr
+
+/**
+ * A conversion that erases the actor isolation of an expression with `@isolated(any)` function
+ * type.
+ */
+final class ActorIsolationErasureExpr = Impl::ActorIsolationErasureExpr;
diff --git a/swift/ql/lib/codeql/swift/elements/expr/CurrentContextIsolationExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/CurrentContextIsolationExpr.qll
new file mode 100644
index 00000000000..09bfc59e362
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/CurrentContextIsolationExpr.qll
@@ -0,0 +1,14 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the public class `CurrentContextIsolationExpr`.
+ */
+
+private import internal.CurrentContextIsolationExprImpl
+import codeql.swift.elements.expr.Expr
+
+/**
+ * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`.
+ * This is synthesized by the type checker and does not have any way to be expressed explicitly in
+ * the source.
+ */
+final class CurrentContextIsolationExpr = Impl::CurrentContextIsolationExpr;
diff --git a/swift/ql/lib/codeql/swift/elements/expr/ExtractFunctionIsolationExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/ExtractFunctionIsolationExpr.qll
new file mode 100644
index 00000000000..62ef58ee602
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/ExtractFunctionIsolationExpr.qll
@@ -0,0 +1,20 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the public class `ExtractFunctionIsolationExpr`.
+ */
+
+private import internal.ExtractFunctionIsolationExprImpl
+import codeql.swift.elements.expr.Expr
+
+/**
+ * An expression that extracts the function isolation of an expression with `@isolated(any)`
+ * function type.
+ *
+ * For example:
+ * ```
+ * func foo(x: @isolated(any) () -> ()) {
+ * let isolation = x.isolation
+ * }
+ * ```
+ */
+final class ExtractFunctionIsolationExpr = Impl::ExtractFunctionIsolationExpr;
diff --git a/swift/ql/lib/codeql/swift/elements/expr/UnreachableExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/UnreachableExpr.qll
new file mode 100644
index 00000000000..23c79595be1
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/UnreachableExpr.qll
@@ -0,0 +1,12 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the public class `UnreachableExpr`.
+ */
+
+private import internal.UnreachableExprImpl
+import codeql.swift.elements.expr.ImplicitConversionExpr
+
+/**
+ * A conversion from the uninhabited type to any other type. It's never evaluated.
+ */
+final class UnreachableExpr = Impl::UnreachableExpr;
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprConstructor.qll
new file mode 100644
index 00000000000..26690bc64de
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprConstructor.qll
@@ -0,0 +1,14 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module defines the hook used internally to tweak the characteristic predicate of
+ * `ActorIsolationErasureExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.Raw
+
+/**
+ * The characteristic predicate of `ActorIsolationErasureExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+predicate constructActorIsolationErasureExpr(Raw::ActorIsolationErasureExpr id) { any() }
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprImpl.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprImpl.qll
new file mode 100644
index 00000000000..0cbc16f0908
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/ActorIsolationErasureExprImpl.qll
@@ -0,0 +1,20 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module provides a hand-modifiable wrapper around the generated class `ActorIsolationErasureExpr`.
+ *
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.expr.ActorIsolationErasureExpr
+
+/**
+ * INTERNAL: This module contains the customizable definition of `ActorIsolationErasureExpr` and should not
+ * be referenced directly.
+ */
+module Impl {
+ /**
+ * A conversion that erases the actor isolation of an expression with `@isolated(any)` function
+ * type.
+ */
+ class ActorIsolationErasureExpr extends Generated::ActorIsolationErasureExpr { }
+}
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprConstructor.qll
new file mode 100644
index 00000000000..00e2e626e15
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprConstructor.qll
@@ -0,0 +1,14 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module defines the hook used internally to tweak the characteristic predicate of
+ * `CurrentContextIsolationExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.Raw
+
+/**
+ * The characteristic predicate of `CurrentContextIsolationExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+predicate constructCurrentContextIsolationExpr(Raw::CurrentContextIsolationExpr id) { any() }
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprImpl.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprImpl.qll
new file mode 100644
index 00000000000..8c4b71eb04f
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/CurrentContextIsolationExprImpl.qll
@@ -0,0 +1,21 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module provides a hand-modifiable wrapper around the generated class `CurrentContextIsolationExpr`.
+ *
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.expr.CurrentContextIsolationExpr
+
+/**
+ * INTERNAL: This module contains the customizable definition of `CurrentContextIsolationExpr` and should not
+ * be referenced directly.
+ */
+module Impl {
+ /**
+ * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`.
+ * This is synthesized by the type checker and does not have any way to be expressed explicitly in
+ * the source.
+ */
+ class CurrentContextIsolationExpr extends Generated::CurrentContextIsolationExpr { }
+}
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprConstructor.qll
new file mode 100644
index 00000000000..a2a52efef60
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprConstructor.qll
@@ -0,0 +1,14 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module defines the hook used internally to tweak the characteristic predicate of
+ * `ExtractFunctionIsolationExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.Raw
+
+/**
+ * The characteristic predicate of `ExtractFunctionIsolationExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+predicate constructExtractFunctionIsolationExpr(Raw::ExtractFunctionIsolationExpr id) { any() }
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprImpl.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprImpl.qll
new file mode 100644
index 00000000000..dcb7d587494
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/ExtractFunctionIsolationExprImpl.qll
@@ -0,0 +1,27 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module provides a hand-modifiable wrapper around the generated class `ExtractFunctionIsolationExpr`.
+ *
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.expr.ExtractFunctionIsolationExpr
+
+/**
+ * INTERNAL: This module contains the customizable definition of `ExtractFunctionIsolationExpr` and should not
+ * be referenced directly.
+ */
+module Impl {
+ /**
+ * An expression that extracts the function isolation of an expression with `@isolated(any)`
+ * function type.
+ *
+ * For example:
+ * ```
+ * func foo(x: @isolated(any) () -> ()) {
+ * let isolation = x.isolation
+ * }
+ * ```
+ */
+ class ExtractFunctionIsolationExpr extends Generated::ExtractFunctionIsolationExpr { }
+}
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprConstructor.qll
new file mode 100644
index 00000000000..8689ded006e
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprConstructor.qll
@@ -0,0 +1,14 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module defines the hook used internally to tweak the characteristic predicate of
+ * `UnreachableExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.Raw
+
+/**
+ * The characteristic predicate of `UnreachableExpr` synthesized instances.
+ * INTERNAL: Do not use.
+ */
+predicate constructUnreachableExpr(Raw::UnreachableExpr id) { any() }
diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprImpl.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprImpl.qll
new file mode 100644
index 00000000000..35dda80350c
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/elements/expr/internal/UnreachableExprImpl.qll
@@ -0,0 +1,19 @@
+// generated by codegen/codegen.py, remove this comment if you wish to edit this file
+/**
+ * This module provides a hand-modifiable wrapper around the generated class `UnreachableExpr`.
+ *
+ * INTERNAL: Do not use.
+ */
+
+private import codeql.swift.generated.expr.UnreachableExpr
+
+/**
+ * INTERNAL: This module contains the customizable definition of `UnreachableExpr` and should not
+ * be referenced directly.
+ */
+module Impl {
+ /**
+ * A conversion from the uninhabited type to any other type. It's never evaluated.
+ */
+ class UnreachableExpr extends Generated::UnreachableExpr { }
+}
diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll
index 13e75c26239..2925620f24f 100644
--- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll
+++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll
@@ -1267,6 +1267,21 @@ private module Impl {
)
}
+ private Element getImmediateChildOfCurrentContextIsolationExpr(
+ CurrentContextIsolationExpr e, int index, string partialPredicateCall
+ ) {
+ exists(int b, int bExpr, int n |
+ b = 0 and
+ bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
+ n = bExpr and
+ (
+ none()
+ or
+ result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
+ )
+ )
+ }
+
private Element getImmediateChildOfDeclRefExpr(
DeclRefExpr e, int index, string partialPredicateCall
) {
@@ -1406,6 +1421,26 @@ private module Impl {
)
}
+ private Element getImmediateChildOfExtractFunctionIsolationExpr(
+ ExtractFunctionIsolationExpr e, int index, string partialPredicateCall
+ ) {
+ exists(int b, int bExpr, int n, int nFunctionExpr |
+ b = 0 and
+ bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
+ n = bExpr and
+ nFunctionExpr = n + 1 and
+ (
+ none()
+ or
+ result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
+ or
+ index = n and
+ result = e.getImmediateFunctionExpr() and
+ partialPredicateCall = "FunctionExpr()"
+ )
+ )
+ }
+
private Element getImmediateChildOfForceValueExpr(
ForceValueExpr e, int index, string partialPredicateCall
) {
@@ -2113,6 +2148,23 @@ private module Impl {
)
}
+ private Element getImmediateChildOfActorIsolationErasureExpr(
+ ActorIsolationErasureExpr e, int index, string partialPredicateCall
+ ) {
+ exists(int b, int bImplicitConversionExpr, int n |
+ b = 0 and
+ bImplicitConversionExpr =
+ b + 1 +
+ max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and
+ n = bImplicitConversionExpr and
+ (
+ none()
+ or
+ result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall)
+ )
+ )
+ }
+
private Element getImmediateChildOfAnyHashableErasureExpr(
AnyHashableErasureExpr e, int index, string partialPredicateCall
) {
@@ -3056,6 +3108,23 @@ private module Impl {
)
}
+ private Element getImmediateChildOfUnreachableExpr(
+ UnreachableExpr e, int index, string partialPredicateCall
+ ) {
+ exists(int b, int bImplicitConversionExpr, int n |
+ b = 0 and
+ bImplicitConversionExpr =
+ b + 1 +
+ max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and
+ n = bImplicitConversionExpr and
+ (
+ none()
+ or
+ result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall)
+ )
+ )
+ }
+
private Element getImmediateChildOfUnresolvedMemberChainResultExpr(
UnresolvedMemberChainResultExpr e, int index, string partialPredicateCall
) {
@@ -5224,6 +5293,8 @@ private module Impl {
or
result = getImmediateChildOfCopyExpr(e, index, partialAccessor)
or
+ result = getImmediateChildOfCurrentContextIsolationExpr(e, index, partialAccessor)
+ or
result = getImmediateChildOfDeclRefExpr(e, index, partialAccessor)
or
result = getImmediateChildOfDefaultArgumentExpr(e, index, partialAccessor)
@@ -5238,6 +5309,8 @@ private module Impl {
or
result = getImmediateChildOfErrorExpr(e, index, partialAccessor)
or
+ result = getImmediateChildOfExtractFunctionIsolationExpr(e, index, partialAccessor)
+ or
result = getImmediateChildOfForceValueExpr(e, index, partialAccessor)
or
result = getImmediateChildOfIfExpr(e, index, partialAccessor)
@@ -5306,6 +5379,8 @@ private module Impl {
or
result = getImmediateChildOfAbiSafeConversionExpr(e, index, partialAccessor)
or
+ result = getImmediateChildOfActorIsolationErasureExpr(e, index, partialAccessor)
+ or
result = getImmediateChildOfAnyHashableErasureExpr(e, index, partialAccessor)
or
result = getImmediateChildOfArchetypeToSuperExpr(e, index, partialAccessor)
@@ -5412,6 +5487,8 @@ private module Impl {
or
result = getImmediateChildOfUnevaluatedInstanceExpr(e, index, partialAccessor)
or
+ result = getImmediateChildOfUnreachableExpr(e, index, partialAccessor)
+ or
result = getImmediateChildOfUnresolvedMemberChainResultExpr(e, index, partialAccessor)
or
result = getImmediateChildOfUnresolvedTypeConversionExpr(e, index, partialAccessor)
diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll
index 820dd7e3a88..2e0e08599ce 100644
--- a/swift/ql/lib/codeql/swift/generated/Raw.qll
+++ b/swift/ql/lib/codeql/swift/generated/Raw.qll
@@ -1215,6 +1215,21 @@ module Raw {
Expr getSubExpr() { copy_exprs(this, result) }
}
+ /**
+ * INTERNAL: Do not use.
+ * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`.
+ * This is synthesized by the type checker and does not have any way to be expressed explicitly in
+ * the source.
+ */
+ class CurrentContextIsolationExpr extends @current_context_isolation_expr, Expr {
+ override string toString() { result = "CurrentContextIsolationExpr" }
+
+ /**
+ * Gets the actor of this current context isolation expression.
+ */
+ Expr getActor() { current_context_isolation_exprs(this, result) }
+ }
+
/**
* INTERNAL: Do not use.
*/
@@ -1346,6 +1361,27 @@ module Raw {
Expr getSubExpr() { explicit_cast_exprs(this, result) }
}
+ /**
+ * INTERNAL: Do not use.
+ * An expression that extracts the function isolation of an expression with `@isolated(any)`
+ * function type.
+ *
+ * For example:
+ * ```
+ * func foo(x: @isolated(any) () -> ()) {
+ * let isolation = x.isolation
+ * }
+ * ```
+ */
+ class ExtractFunctionIsolationExpr extends @extract_function_isolation_expr, Expr {
+ override string toString() { result = "ExtractFunctionIsolationExpr" }
+
+ /**
+ * Gets the function expression of this extract function isolation expression.
+ */
+ Expr getFunctionExpr() { extract_function_isolation_exprs(this, result) }
+ }
+
/**
* INTERNAL: Do not use.
*/
@@ -1901,6 +1937,15 @@ module Raw {
override string toString() { result = "AbiSafeConversionExpr" }
}
+ /**
+ * INTERNAL: Do not use.
+ * A conversion that erases the actor isolation of an expression with `@isolated(any)` function
+ * type.
+ */
+ class ActorIsolationErasureExpr extends @actor_isolation_erasure_expr, ImplicitConversionExpr {
+ override string toString() { result = "ActorIsolationErasureExpr" }
+ }
+
/**
* INTERNAL: Do not use.
*/
@@ -2417,6 +2462,14 @@ module Raw {
override string toString() { result = "UnevaluatedInstanceExpr" }
}
+ /**
+ * INTERNAL: Do not use.
+ * A conversion from the uninhabited type to any other type. It's never evaluated.
+ */
+ class UnreachableExpr extends @unreachable_expr, ImplicitConversionExpr {
+ override string toString() { result = "UnreachableExpr" }
+ }
+
/**
* INTERNAL: Do not use.
*/
diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll
index 44759bc72ea..ce6eca080af 100644
--- a/swift/ql/lib/codeql/swift/generated/Synth.qll
+++ b/swift/ql/lib/codeql/swift/generated/Synth.qll
@@ -192,6 +192,12 @@ module Synth {
* INTERNAL: Do not use.
*/
TAbiSafeConversionExpr(Raw::AbiSafeConversionExpr id) { constructAbiSafeConversionExpr(id) } or
+ /**
+ * INTERNAL: Do not use.
+ */
+ TActorIsolationErasureExpr(Raw::ActorIsolationErasureExpr id) {
+ constructActorIsolationErasureExpr(id)
+ } or
/**
* INTERNAL: Do not use.
*/
@@ -310,6 +316,12 @@ module Synth {
TCovariantReturnConversionExpr(Raw::CovariantReturnConversionExpr id) {
constructCovariantReturnConversionExpr(id)
} or
+ /**
+ * INTERNAL: Do not use.
+ */
+ TCurrentContextIsolationExpr(Raw::CurrentContextIsolationExpr id) {
+ constructCurrentContextIsolationExpr(id)
+ } or
/**
* INTERNAL: Do not use.
*/
@@ -394,6 +406,12 @@ module Synth {
* INTERNAL: Do not use.
*/
TExplicitClosureExpr(Raw::ExplicitClosureExpr id) { constructExplicitClosureExpr(id) } or
+ /**
+ * INTERNAL: Do not use.
+ */
+ TExtractFunctionIsolationExpr(Raw::ExtractFunctionIsolationExpr id) {
+ constructExtractFunctionIsolationExpr(id)
+ } or
/**
* INTERNAL: Do not use.
*/
@@ -660,6 +678,10 @@ module Synth {
TUnevaluatedInstanceExpr(Raw::UnevaluatedInstanceExpr id) {
constructUnevaluatedInstanceExpr(id)
} or
+ /**
+ * INTERNAL: Do not use.
+ */
+ TUnreachableExpr(Raw::UnreachableExpr id) { constructUnreachableExpr(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -1230,15 +1252,15 @@ module Synth {
class TExpr =
TAnyTryExpr or TAppliedPropertyWrapperExpr or TApplyExpr or TAssignExpr or TBindOptionalExpr or
TCaptureListExpr or TClosureExpr or TCollectionExpr or TConsumeExpr or TCopyExpr or
- TDeclRefExpr or TDefaultArgumentExpr or TDiscardAssignmentExpr or
- TDotSyntaxBaseIgnoredExpr or TDynamicTypeExpr or TEnumIsCaseExpr or TErrorExpr or
- TExplicitCastExpr or TForceValueExpr or TIdentityExpr or TIfExpr or
- TImplicitConversionExpr or TInOutExpr or TKeyPathApplicationExpr or TKeyPathDotExpr or
- TKeyPathExpr or TLazyInitializationExpr or TLiteralExpr or TLookupExpr or
- TMakeTemporarilyEscapableExpr or TMaterializePackExpr or TObjCSelectorExpr or TOneWayExpr or
- TOpaqueValueExpr or TOpenExistentialExpr or TOptionalEvaluationExpr or
- TOtherInitializerRefExpr or TOverloadedDeclRefExpr or TPackElementExpr or
- TPackExpansionExpr or TPropertyWrapperValuePlaceholderExpr or
+ TCurrentContextIsolationExpr or TDeclRefExpr or TDefaultArgumentExpr or
+ TDiscardAssignmentExpr or TDotSyntaxBaseIgnoredExpr or TDynamicTypeExpr or
+ TEnumIsCaseExpr or TErrorExpr or TExplicitCastExpr or TExtractFunctionIsolationExpr or
+ TForceValueExpr or TIdentityExpr or TIfExpr or TImplicitConversionExpr or TInOutExpr or
+ TKeyPathApplicationExpr or TKeyPathDotExpr or TKeyPathExpr or TLazyInitializationExpr or
+ TLiteralExpr or TLookupExpr or TMakeTemporarilyEscapableExpr or TMaterializePackExpr or
+ TObjCSelectorExpr or TOneWayExpr or TOpaqueValueExpr or TOpenExistentialExpr or
+ TOptionalEvaluationExpr or TOtherInitializerRefExpr or TOverloadedDeclRefExpr or
+ TPackElementExpr or TPackExpansionExpr or TPropertyWrapperValuePlaceholderExpr or
TRebindSelfInInitializerExpr or TSequenceExpr or TSingleValueStmtExpr or TSuperRefExpr or
TTapExpr or TTupleElementExpr or TTupleExpr or TTypeExpr or TUnresolvedDeclRefExpr or
TUnresolvedDotExpr or TUnresolvedMemberExpr or TUnresolvedPatternExpr or
@@ -1254,8 +1276,8 @@ module Synth {
* INTERNAL: Do not use.
*/
class TImplicitConversionExpr =
- TAbiSafeConversionExpr or TAnyHashableErasureExpr or TArchetypeToSuperExpr or
- TArrayToPointerExpr or TBridgeFromObjCExpr or TBridgeToObjCExpr or
+ TAbiSafeConversionExpr or TActorIsolationErasureExpr or TAnyHashableErasureExpr or
+ TArchetypeToSuperExpr or TArrayToPointerExpr or TBridgeFromObjCExpr or TBridgeToObjCExpr or
TClassMetatypeToObjectExpr or TCollectionUpcastConversionExpr or
TConditionalBridgeFromObjCExpr or TCovariantFunctionConversionExpr or
TCovariantReturnConversionExpr or TDerivedToBaseExpr or TDestructureTupleExpr or
@@ -1265,7 +1287,8 @@ module Synth {
TLinearFunctionExpr or TLinearFunctionExtractOriginalExpr or
TLinearToDifferentiableFunctionExpr or TLoadExpr or TMetatypeConversionExpr or
TPointerToPointerExpr or TProtocolMetatypeToObjectExpr or TStringToPointerExpr or
- TUnderlyingToOpaqueExpr or TUnevaluatedInstanceExpr or TUnresolvedTypeConversionExpr;
+ TUnderlyingToOpaqueExpr or TUnevaluatedInstanceExpr or TUnreachableExpr or
+ TUnresolvedTypeConversionExpr;
/**
* INTERNAL: Do not use.
@@ -1698,6 +1721,14 @@ module Synth {
result = TAbiSafeConversionExpr(e)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a raw element to a synthesized `TActorIsolationErasureExpr`, if possible.
+ */
+ TActorIsolationErasureExpr convertActorIsolationErasureExprFromRaw(Raw::Element e) {
+ result = TActorIsolationErasureExpr(e)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TAnyHashableErasureExpr`, if possible.
@@ -1878,6 +1909,14 @@ module Synth {
result = TCovariantReturnConversionExpr(e)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a raw element to a synthesized `TCurrentContextIsolationExpr`, if possible.
+ */
+ TCurrentContextIsolationExpr convertCurrentContextIsolationExprFromRaw(Raw::Element e) {
+ result = TCurrentContextIsolationExpr(e)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TDeclRefExpr`, if possible.
@@ -2018,6 +2057,14 @@ module Synth {
result = TExplicitClosureExpr(e)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a raw element to a synthesized `TExtractFunctionIsolationExpr`, if possible.
+ */
+ TExtractFunctionIsolationExpr convertExtractFunctionIsolationExprFromRaw(Raw::Element e) {
+ result = TExtractFunctionIsolationExpr(e)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TFloatLiteralExpr`, if possible.
@@ -2452,6 +2499,12 @@ module Synth {
result = TUnevaluatedInstanceExpr(e)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a raw element to a synthesized `TUnreachableExpr`, if possible.
+ */
+ TUnreachableExpr convertUnreachableExprFromRaw(Raw::Element e) { result = TUnreachableExpr(e) }
+
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TUnresolvedDeclRefExpr`, if possible.
@@ -3529,6 +3582,8 @@ module Synth {
or
result = convertCopyExprFromRaw(e)
or
+ result = convertCurrentContextIsolationExprFromRaw(e)
+ or
result = convertDeclRefExprFromRaw(e)
or
result = convertDefaultArgumentExprFromRaw(e)
@@ -3545,6 +3600,8 @@ module Synth {
or
result = convertExplicitCastExprFromRaw(e)
or
+ result = convertExtractFunctionIsolationExprFromRaw(e)
+ or
result = convertForceValueExprFromRaw(e)
or
result = convertIdentityExprFromRaw(e)
@@ -3643,6 +3700,8 @@ module Synth {
TImplicitConversionExpr convertImplicitConversionExprFromRaw(Raw::Element e) {
result = convertAbiSafeConversionExprFromRaw(e)
or
+ result = convertActorIsolationErasureExprFromRaw(e)
+ or
result = convertAnyHashableErasureExprFromRaw(e)
or
result = convertArchetypeToSuperExprFromRaw(e)
@@ -3703,6 +3762,8 @@ module Synth {
or
result = convertUnevaluatedInstanceExprFromRaw(e)
or
+ result = convertUnreachableExprFromRaw(e)
+ or
result = convertUnresolvedTypeConversionExprFromRaw(e)
}
@@ -4370,6 +4431,14 @@ module Synth {
e = TAbiSafeConversionExpr(result)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a synthesized `TActorIsolationErasureExpr` to a raw DB element, if possible.
+ */
+ Raw::Element convertActorIsolationErasureExprToRaw(TActorIsolationErasureExpr e) {
+ e = TActorIsolationErasureExpr(result)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a synthesized `TAnyHashableErasureExpr` to a raw DB element, if possible.
@@ -4550,6 +4619,14 @@ module Synth {
e = TCovariantReturnConversionExpr(result)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a synthesized `TCurrentContextIsolationExpr` to a raw DB element, if possible.
+ */
+ Raw::Element convertCurrentContextIsolationExprToRaw(TCurrentContextIsolationExpr e) {
+ e = TCurrentContextIsolationExpr(result)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a synthesized `TDeclRefExpr` to a raw DB element, if possible.
@@ -4690,6 +4767,14 @@ module Synth {
e = TExplicitClosureExpr(result)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a synthesized `TExtractFunctionIsolationExpr` to a raw DB element, if possible.
+ */
+ Raw::Element convertExtractFunctionIsolationExprToRaw(TExtractFunctionIsolationExpr e) {
+ e = TExtractFunctionIsolationExpr(result)
+ }
+
/**
* INTERNAL: Do not use.
* Converts a synthesized `TFloatLiteralExpr` to a raw DB element, if possible.
@@ -5122,6 +5207,12 @@ module Synth {
e = TUnevaluatedInstanceExpr(result)
}
+ /**
+ * INTERNAL: Do not use.
+ * Converts a synthesized `TUnreachableExpr` to a raw DB element, if possible.
+ */
+ Raw::Element convertUnreachableExprToRaw(TUnreachableExpr e) { e = TUnreachableExpr(result) }
+
/**
* INTERNAL: Do not use.
* Converts a synthesized `TUnresolvedDeclRefExpr` to a raw DB element, if possible.
@@ -6199,6 +6290,8 @@ module Synth {
or
result = convertCopyExprToRaw(e)
or
+ result = convertCurrentContextIsolationExprToRaw(e)
+ or
result = convertDeclRefExprToRaw(e)
or
result = convertDefaultArgumentExprToRaw(e)
@@ -6215,6 +6308,8 @@ module Synth {
or
result = convertExplicitCastExprToRaw(e)
or
+ result = convertExtractFunctionIsolationExprToRaw(e)
+ or
result = convertForceValueExprToRaw(e)
or
result = convertIdentityExprToRaw(e)
@@ -6313,6 +6408,8 @@ module Synth {
Raw::Element convertImplicitConversionExprToRaw(TImplicitConversionExpr e) {
result = convertAbiSafeConversionExprToRaw(e)
or
+ result = convertActorIsolationErasureExprToRaw(e)
+ or
result = convertAnyHashableErasureExprToRaw(e)
or
result = convertArchetypeToSuperExprToRaw(e)
@@ -6373,6 +6470,8 @@ module Synth {
or
result = convertUnevaluatedInstanceExprToRaw(e)
or
+ result = convertUnreachableExprToRaw(e)
+ or
result = convertUnresolvedTypeConversionExprToRaw(e)
}
diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll
index 0d5dcdaaa6a..1da3dcbc013 100644
--- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll
+++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll
@@ -45,6 +45,7 @@ import codeql.swift.elements.decl.internal.SubscriptDeclConstructor
import codeql.swift.elements.decl.internal.TopLevelCodeDeclConstructor
import codeql.swift.elements.decl.internal.TypeAliasDeclConstructor
import codeql.swift.elements.expr.internal.AbiSafeConversionExprConstructor
+import codeql.swift.elements.expr.internal.ActorIsolationErasureExprConstructor
import codeql.swift.elements.expr.internal.AnyHashableErasureExprConstructor
import codeql.swift.elements.expr.internal.AppliedPropertyWrapperExprConstructor
import codeql.swift.elements.expr.internal.ArchetypeToSuperExprConstructor
@@ -71,6 +72,7 @@ import codeql.swift.elements.expr.internal.ConsumeExprConstructor
import codeql.swift.elements.expr.internal.CopyExprConstructor
import codeql.swift.elements.expr.internal.CovariantFunctionConversionExprConstructor
import codeql.swift.elements.expr.internal.CovariantReturnConversionExprConstructor
+import codeql.swift.elements.expr.internal.CurrentContextIsolationExprConstructor
import codeql.swift.elements.expr.internal.DeclRefExprConstructor
import codeql.swift.elements.expr.internal.DefaultArgumentExprConstructor
import codeql.swift.elements.expr.internal.DerivedToBaseExprConstructor
@@ -90,6 +92,7 @@ import codeql.swift.elements.expr.internal.ErasureExprConstructor
import codeql.swift.elements.expr.internal.ErrorExprConstructor
import codeql.swift.elements.expr.internal.ExistentialMetatypeToObjectExprConstructor
import codeql.swift.elements.expr.internal.ExplicitClosureExprConstructor
+import codeql.swift.elements.expr.internal.ExtractFunctionIsolationExprConstructor
import codeql.swift.elements.expr.internal.FloatLiteralExprConstructor
import codeql.swift.elements.expr.internal.ForceTryExprConstructor
import codeql.swift.elements.expr.internal.ForceValueExprConstructor
@@ -151,6 +154,7 @@ import codeql.swift.elements.expr.internal.TupleExprConstructor
import codeql.swift.elements.expr.internal.TypeExprConstructor
import codeql.swift.elements.expr.internal.UnderlyingToOpaqueExprConstructor
import codeql.swift.elements.expr.internal.UnevaluatedInstanceExprConstructor
+import codeql.swift.elements.expr.internal.UnreachableExprConstructor
import codeql.swift.elements.expr.internal.UnresolvedDeclRefExprConstructor
import codeql.swift.elements.expr.internal.UnresolvedDotExprConstructor
import codeql.swift.elements.expr.internal.UnresolvedMemberChainResultExprConstructor
diff --git a/swift/ql/lib/codeql/swift/generated/expr/ActorIsolationErasureExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/ActorIsolationErasureExpr.qll
new file mode 100644
index 00000000000..0811908bbab
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/generated/expr/ActorIsolationErasureExpr.qll
@@ -0,0 +1,27 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the generated definition of `ActorIsolationErasureExpr`.
+ * INTERNAL: Do not import directly.
+ */
+
+private import codeql.swift.generated.Synth
+private import codeql.swift.generated.Raw
+import codeql.swift.elements.expr.internal.ImplicitConversionExprImpl::Impl as ImplicitConversionExprImpl
+
+/**
+ * INTERNAL: This module contains the fully generated definition of `ActorIsolationErasureExpr` and should not
+ * be referenced directly.
+ */
+module Generated {
+ /**
+ * A conversion that erases the actor isolation of an expression with `@isolated(any)` function
+ * type.
+ * INTERNAL: Do not reference the `Generated::ActorIsolationErasureExpr` class directly.
+ * Use the subclass `ActorIsolationErasureExpr`, where the following predicates are available.
+ */
+ class ActorIsolationErasureExpr extends Synth::TActorIsolationErasureExpr,
+ ImplicitConversionExprImpl::ImplicitConversionExpr
+ {
+ override string getAPrimaryQlClass() { result = "ActorIsolationErasureExpr" }
+ }
+}
diff --git a/swift/ql/lib/codeql/swift/generated/expr/CurrentContextIsolationExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/CurrentContextIsolationExpr.qll
new file mode 100644
index 00000000000..32a89535543
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/generated/expr/CurrentContextIsolationExpr.qll
@@ -0,0 +1,50 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the generated definition of `CurrentContextIsolationExpr`.
+ * INTERNAL: Do not import directly.
+ */
+
+private import codeql.swift.generated.Synth
+private import codeql.swift.generated.Raw
+import codeql.swift.elements.expr.Expr
+import codeql.swift.elements.expr.internal.ExprImpl::Impl as ExprImpl
+
+/**
+ * INTERNAL: This module contains the fully generated definition of `CurrentContextIsolationExpr` and should not
+ * be referenced directly.
+ */
+module Generated {
+ /**
+ * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`.
+ * This is synthesized by the type checker and does not have any way to be expressed explicitly in
+ * the source.
+ * INTERNAL: Do not reference the `Generated::CurrentContextIsolationExpr` class directly.
+ * Use the subclass `CurrentContextIsolationExpr`, where the following predicates are available.
+ */
+ class CurrentContextIsolationExpr extends Synth::TCurrentContextIsolationExpr, ExprImpl::Expr {
+ override string getAPrimaryQlClass() { result = "CurrentContextIsolationExpr" }
+
+ /**
+ * Gets the actor of this current context isolation expression.
+ *
+ * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the
+ * behavior of both the `Immediate` and non-`Immediate` versions.
+ */
+ Expr getImmediateActor() {
+ result =
+ Synth::convertExprFromRaw(Synth::convertCurrentContextIsolationExprToRaw(this)
+ .(Raw::CurrentContextIsolationExpr)
+ .getActor())
+ }
+
+ /**
+ * Gets the actor of this current context isolation expression.
+ */
+ final Expr getActor() {
+ exists(Expr immediate |
+ immediate = this.getImmediateActor() and
+ if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve()
+ )
+ }
+ }
+}
diff --git a/swift/ql/lib/codeql/swift/generated/expr/ExtractFunctionIsolationExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/ExtractFunctionIsolationExpr.qll
new file mode 100644
index 00000000000..28b942b54da
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/generated/expr/ExtractFunctionIsolationExpr.qll
@@ -0,0 +1,56 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the generated definition of `ExtractFunctionIsolationExpr`.
+ * INTERNAL: Do not import directly.
+ */
+
+private import codeql.swift.generated.Synth
+private import codeql.swift.generated.Raw
+import codeql.swift.elements.expr.Expr
+import codeql.swift.elements.expr.internal.ExprImpl::Impl as ExprImpl
+
+/**
+ * INTERNAL: This module contains the fully generated definition of `ExtractFunctionIsolationExpr` and should not
+ * be referenced directly.
+ */
+module Generated {
+ /**
+ * An expression that extracts the function isolation of an expression with `@isolated(any)`
+ * function type.
+ *
+ * For example:
+ * ```
+ * func foo(x: @isolated(any) () -> ()) {
+ * let isolation = x.isolation
+ * }
+ * ```
+ * INTERNAL: Do not reference the `Generated::ExtractFunctionIsolationExpr` class directly.
+ * Use the subclass `ExtractFunctionIsolationExpr`, where the following predicates are available.
+ */
+ class ExtractFunctionIsolationExpr extends Synth::TExtractFunctionIsolationExpr, ExprImpl::Expr {
+ override string getAPrimaryQlClass() { result = "ExtractFunctionIsolationExpr" }
+
+ /**
+ * Gets the function expression of this extract function isolation expression.
+ *
+ * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the
+ * behavior of both the `Immediate` and non-`Immediate` versions.
+ */
+ Expr getImmediateFunctionExpr() {
+ result =
+ Synth::convertExprFromRaw(Synth::convertExtractFunctionIsolationExprToRaw(this)
+ .(Raw::ExtractFunctionIsolationExpr)
+ .getFunctionExpr())
+ }
+
+ /**
+ * Gets the function expression of this extract function isolation expression.
+ */
+ final Expr getFunctionExpr() {
+ exists(Expr immediate |
+ immediate = this.getImmediateFunctionExpr() and
+ if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve()
+ )
+ }
+ }
+}
diff --git a/swift/ql/lib/codeql/swift/generated/expr/UnreachableExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/UnreachableExpr.qll
new file mode 100644
index 00000000000..5737d6b9172
--- /dev/null
+++ b/swift/ql/lib/codeql/swift/generated/expr/UnreachableExpr.qll
@@ -0,0 +1,26 @@
+// generated by codegen/codegen.py, do not edit
+/**
+ * This module provides the generated definition of `UnreachableExpr`.
+ * INTERNAL: Do not import directly.
+ */
+
+private import codeql.swift.generated.Synth
+private import codeql.swift.generated.Raw
+import codeql.swift.elements.expr.internal.ImplicitConversionExprImpl::Impl as ImplicitConversionExprImpl
+
+/**
+ * INTERNAL: This module contains the fully generated definition of `UnreachableExpr` and should not
+ * be referenced directly.
+ */
+module Generated {
+ /**
+ * A conversion from the uninhabited type to any other type. It's never evaluated.
+ * INTERNAL: Do not reference the `Generated::UnreachableExpr` class directly.
+ * Use the subclass `UnreachableExpr`, where the following predicates are available.
+ */
+ class UnreachableExpr extends Synth::TUnreachableExpr,
+ ImplicitConversionExprImpl::ImplicitConversionExpr
+ {
+ override string getAPrimaryQlClass() { result = "UnreachableExpr" }
+ }
+}
diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme
index 33db81ad4b6..be2357fd002 100644
--- a/swift/ql/lib/swift.dbscheme
+++ b/swift/ql/lib/swift.dbscheme
@@ -778,6 +778,7 @@ arguments( //dir=expr
| @collection_expr
| @consume_expr
| @copy_expr
+| @current_context_isolation_expr
| @decl_ref_expr
| @default_argument_expr
| @discard_assignment_expr
@@ -786,6 +787,7 @@ arguments( //dir=expr
| @enum_is_case_expr
| @error_expr
| @explicit_cast_expr
+| @extract_function_isolation_expr
| @force_value_expr
| @identity_expr
| @if_expr
@@ -914,6 +916,11 @@ copy_exprs( //dir=expr
int sub_expr: @expr_or_none ref
);
+current_context_isolation_exprs( //dir=expr
+ unique int id: @current_context_isolation_expr,
+ int actor: @expr_or_none ref
+);
+
decl_ref_exprs( //dir=expr
unique int id: @decl_ref_expr,
int decl: @decl_or_none ref
@@ -994,6 +1001,11 @@ explicit_cast_exprs( //dir=expr
int sub_expr: @expr_or_none ref
);
+extract_function_isolation_exprs( //dir=expr
+ unique int id: @extract_function_isolation_expr,
+ int function_expr: @expr_or_none ref
+);
+
force_value_exprs( //dir=expr
unique int id: @force_value_expr,
int sub_expr: @expr_or_none ref
@@ -1022,6 +1034,7 @@ if_exprs( //dir=expr
@implicit_conversion_expr =
@abi_safe_conversion_expr
+| @actor_isolation_erasure_expr
| @any_hashable_erasure_expr
| @archetype_to_super_expr
| @array_to_pointer_expr
@@ -1052,6 +1065,7 @@ if_exprs( //dir=expr
| @string_to_pointer_expr
| @underlying_to_opaque_expr
| @unevaluated_instance_expr
+| @unreachable_expr
| @unresolved_type_conversion_expr
;
@@ -1306,6 +1320,10 @@ abi_safe_conversion_exprs( //dir=expr
unique int id: @abi_safe_conversion_expr
);
+actor_isolation_erasure_exprs( //dir=expr
+ unique int id: @actor_isolation_erasure_expr
+);
+
any_hashable_erasure_exprs( //dir=expr
unique int id: @any_hashable_erasure_expr
);
@@ -1626,6 +1644,10 @@ unevaluated_instance_exprs( //dir=expr
unique int id: @unevaluated_instance_expr
);
+unreachable_exprs( //dir=expr
+ unique int id: @unreachable_expr
+);
+
unresolved_member_chain_result_exprs( //dir=expr
unique int id: @unresolved_member_chain_result_expr
);
diff --git a/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/old.dbscheme b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/old.dbscheme
new file mode 100644
index 00000000000..33db81ad4b6
--- /dev/null
+++ b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/old.dbscheme
@@ -0,0 +1,2793 @@
+// generated by codegen/codegen.py, do not edit
+
+// from prefix.dbscheme
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(
+ string prefix: string ref
+);
+
+
+// from schema.py
+
+@element =
+ @file
+| @generic_context
+| @locatable
+| @location
+| @type
+;
+
+#keyset[id]
+element_is_unknown(
+ int id: @element ref
+);
+
+@file =
+ @db_file
+;
+
+#keyset[id]
+files(
+ int id: @file ref,
+ string name: string ref
+);
+
+#keyset[id]
+file_is_successfully_extracted(
+ int id: @file ref
+);
+
+@locatable =
+ @argument
+| @ast_node
+| @comment
+| @diagnostics
+| @error_element
+;
+
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_or_none ref
+);
+
+@location =
+ @db_location
+;
+
+#keyset[id]
+locations(
+ int id: @location ref,
+ int file: @file_or_none ref,
+ int start_line: int ref,
+ int start_column: int ref,
+ int end_line: int ref,
+ int end_column: int ref
+);
+
+@ast_node =
+ @availability_info
+| @availability_spec
+| @callable
+| @case_label_item
+| @condition_element
+| @decl
+| @expr
+| @key_path_component
+| @macro_role
+| @pattern
+| @stmt
+| @stmt_condition
+| @type_repr
+;
+
+comments(
+ unique int id: @comment,
+ string text: string ref
+);
+
+db_files(
+ unique int id: @db_file
+);
+
+db_locations(
+ unique int id: @db_location
+);
+
+diagnostics(
+ unique int id: @diagnostics,
+ string text: string ref,
+ int kind: int ref
+);
+
+@error_element =
+ @error_expr
+| @error_type
+| @overloaded_decl_ref_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_chain_result_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @unresolved_type
+| @unresolved_type_conversion_expr
+| @unspecified_element
+;
+
+availability_infos(
+ unique int id: @availability_info
+);
+
+#keyset[id]
+availability_info_is_unavailable(
+ int id: @availability_info ref
+);
+
+#keyset[id, index]
+availability_info_specs(
+ int id: @availability_info ref,
+ int index: int ref,
+ int spec: @availability_spec_or_none ref
+);
+
+@availability_spec =
+ @other_availability_spec
+| @platform_version_availability_spec
+;
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_names(
+ int id: @callable ref,
+ string name: string ref
+);
+
+#keyset[id]
+callable_self_params(
+ int id: @callable ref,
+ int self_param: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+callable_params(
+ int id: @callable ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+#keyset[id]
+callable_bodies(
+ int id: @callable ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+callable_captures(
+ int id: @callable ref,
+ int index: int ref,
+ int capture: @captured_decl_or_none ref
+);
+
+key_path_components(
+ unique int id: @key_path_component,
+ int kind: int ref,
+ int component_type: @type_or_none ref
+);
+
+#keyset[id, index]
+key_path_component_subscript_arguments(
+ int id: @key_path_component ref,
+ int index: int ref,
+ int subscript_argument: @argument_or_none ref
+);
+
+#keyset[id]
+key_path_component_tuple_indices(
+ int id: @key_path_component ref,
+ int tuple_index: int ref
+);
+
+#keyset[id]
+key_path_component_decl_refs(
+ int id: @key_path_component ref,
+ int decl_ref: @value_decl_or_none ref
+);
+
+macro_roles(
+ unique int id: @macro_role,
+ int kind: int ref,
+ int macro_syntax: int ref
+);
+
+#keyset[id, index]
+macro_role_conformances(
+ int id: @macro_role ref,
+ int index: int ref,
+ int conformance: @type_expr_or_none ref
+);
+
+#keyset[id, index]
+macro_role_names(
+ int id: @macro_role ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unspecified_elements(
+ unique int id: @unspecified_element,
+ string property: string ref,
+ string error: string ref
+);
+
+#keyset[id]
+unspecified_element_parents(
+ int id: @unspecified_element ref,
+ int parent: @element ref
+);
+
+#keyset[id]
+unspecified_element_indices(
+ int id: @unspecified_element ref,
+ int index: int ref
+);
+
+#keyset[id, index]
+unspecified_element_children(
+ int id: @unspecified_element ref,
+ int index: int ref,
+ int child: @ast_node_or_none ref
+);
+
+other_availability_specs(
+ unique int id: @other_availability_spec
+);
+
+platform_version_availability_specs(
+ unique int id: @platform_version_availability_spec,
+ string platform: string ref,
+ string version: string ref
+);
+
+@decl =
+ @captured_decl
+| @enum_case_decl
+| @extension_decl
+| @if_config_decl
+| @import_decl
+| @missing_member_decl
+| @operator_decl
+| @pattern_binding_decl
+| @pound_diagnostic_decl
+| @precedence_group_decl
+| @top_level_code_decl
+| @value_decl
+;
+
+#keyset[id]
+decls( //dir=decl
+ int id: @decl ref,
+ int module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+decl_members( //dir=decl
+ int id: @decl ref,
+ int index: int ref,
+ int member: @decl_or_none ref
+);
+
+@generic_context =
+ @extension_decl
+| @function
+| @generic_type_decl
+| @macro_decl
+| @subscript_decl
+;
+
+#keyset[id, index]
+generic_context_generic_type_params( //dir=decl
+ int id: @generic_context ref,
+ int index: int ref,
+ int generic_type_param: @generic_type_param_decl_or_none ref
+);
+
+captured_decls( //dir=decl
+ unique int id: @captured_decl,
+ int decl: @value_decl_or_none ref
+);
+
+#keyset[id]
+captured_decl_is_direct( //dir=decl
+ int id: @captured_decl ref
+);
+
+#keyset[id]
+captured_decl_is_escaping( //dir=decl
+ int id: @captured_decl ref
+);
+
+enum_case_decls( //dir=decl
+ unique int id: @enum_case_decl
+);
+
+#keyset[id, index]
+enum_case_decl_elements( //dir=decl
+ int id: @enum_case_decl ref,
+ int index: int ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+extension_decls( //dir=decl
+ unique int id: @extension_decl,
+ int extended_type_decl: @nominal_type_decl_or_none ref
+);
+
+#keyset[id, index]
+extension_decl_protocols( //dir=decl
+ int id: @extension_decl ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+if_config_decls( //dir=decl
+ unique int id: @if_config_decl
+);
+
+#keyset[id, index]
+if_config_decl_active_elements( //dir=decl
+ int id: @if_config_decl ref,
+ int index: int ref,
+ int active_element: @ast_node_or_none ref
+);
+
+import_decls( //dir=decl
+ unique int id: @import_decl
+);
+
+#keyset[id]
+import_decl_is_exported( //dir=decl
+ int id: @import_decl ref
+);
+
+#keyset[id]
+import_decl_imported_modules( //dir=decl
+ int id: @import_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+import_decl_declarations( //dir=decl
+ int id: @import_decl ref,
+ int index: int ref,
+ int declaration: @value_decl_or_none ref
+);
+
+missing_member_decls( //dir=decl
+ unique int id: @missing_member_decl,
+ string name: string ref
+);
+
+@operator_decl =
+ @infix_operator_decl
+| @postfix_operator_decl
+| @prefix_operator_decl
+;
+
+#keyset[id]
+operator_decls( //dir=decl
+ int id: @operator_decl ref,
+ string name: string ref
+);
+
+pattern_binding_decls( //dir=decl
+ unique int id: @pattern_binding_decl
+);
+
+#keyset[id, index]
+pattern_binding_decl_inits( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int init: @expr_or_none ref
+);
+
+#keyset[id, index]
+pattern_binding_decl_patterns( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int pattern: @pattern_or_none ref
+);
+
+pound_diagnostic_decls( //dir=decl
+ unique int id: @pound_diagnostic_decl,
+ int kind: int ref,
+ int message: @string_literal_expr_or_none ref
+);
+
+precedence_group_decls( //dir=decl
+ unique int id: @precedence_group_decl
+);
+
+top_level_code_decls( //dir=decl
+ unique int id: @top_level_code_decl,
+ int body: @brace_stmt_or_none ref
+);
+
+@value_decl =
+ @abstract_storage_decl
+| @enum_element_decl
+| @function
+| @macro_decl
+| @type_decl
+;
+
+#keyset[id]
+value_decls( //dir=decl
+ int id: @value_decl ref,
+ int interface_type: @type_or_none ref
+);
+
+@abstract_storage_decl =
+ @subscript_decl
+| @var_decl
+;
+
+#keyset[id, index]
+abstract_storage_decl_accessors( //dir=decl
+ int id: @abstract_storage_decl ref,
+ int index: int ref,
+ int accessor: @accessor_or_none ref
+);
+
+enum_element_decls( //dir=decl
+ unique int id: @enum_element_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+enum_element_decl_params( //dir=decl
+ int id: @enum_element_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@function =
+ @accessor_or_named_function
+| @deinitializer
+| @initializer
+;
+
+infix_operator_decls( //dir=decl
+ unique int id: @infix_operator_decl
+);
+
+#keyset[id]
+infix_operator_decl_precedence_groups( //dir=decl
+ int id: @infix_operator_decl ref,
+ int precedence_group: @precedence_group_decl_or_none ref
+);
+
+macro_decls( //dir=decl
+ unique int id: @macro_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+macro_decl_parameters( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int parameter: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+macro_decl_roles( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int role: @macro_role_or_none ref
+);
+
+postfix_operator_decls( //dir=decl
+ unique int id: @postfix_operator_decl
+);
+
+prefix_operator_decls( //dir=decl
+ unique int id: @prefix_operator_decl
+);
+
+@type_decl =
+ @abstract_type_param_decl
+| @generic_type_decl
+| @module_decl
+;
+
+#keyset[id]
+type_decls( //dir=decl
+ int id: @type_decl ref,
+ string name: string ref
+);
+
+#keyset[id, index]
+type_decl_inherited_types( //dir=decl
+ int id: @type_decl ref,
+ int index: int ref,
+ int inherited_type: @type_or_none ref
+);
+
+@abstract_type_param_decl =
+ @associated_type_decl
+| @generic_type_param_decl
+;
+
+@accessor_or_named_function =
+ @accessor
+| @named_function
+;
+
+deinitializers( //dir=decl
+ unique int id: @deinitializer
+);
+
+@generic_type_decl =
+ @nominal_type_decl
+| @opaque_type_decl
+| @type_alias_decl
+;
+
+initializers( //dir=decl
+ unique int id: @initializer
+);
+
+module_decls( //dir=decl
+ unique int id: @module_decl
+);
+
+#keyset[id]
+module_decl_is_builtin_module( //dir=decl
+ int id: @module_decl ref
+);
+
+#keyset[id]
+module_decl_is_system_module( //dir=decl
+ int id: @module_decl ref
+);
+
+module_decl_imported_modules( //dir=decl
+ int id: @module_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+module_decl_exported_modules( //dir=decl
+ int id: @module_decl ref,
+ int exported_module: @module_decl_or_none ref
+);
+
+subscript_decls( //dir=decl
+ unique int id: @subscript_decl,
+ int element_type: @type_or_none ref
+);
+
+#keyset[id, index]
+subscript_decl_params( //dir=decl
+ int id: @subscript_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@var_decl =
+ @concrete_var_decl
+| @param_decl
+;
+
+#keyset[id]
+var_decls( //dir=decl
+ int id: @var_decl ref,
+ string name: string ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_attached_property_wrapper_types( //dir=decl
+ int id: @var_decl ref,
+ int attached_property_wrapper_type: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_patterns( //dir=decl
+ int id: @var_decl ref,
+ int parent_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_initializers( //dir=decl
+ int id: @var_decl ref,
+ int parent_initializer: @expr_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var: @var_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var: @var_decl_or_none ref
+);
+
+accessors( //dir=decl
+ unique int id: @accessor
+);
+
+#keyset[id]
+accessor_is_getter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_setter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_will_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_did_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_read( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_modify( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_address( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_mutable_address( //dir=decl
+ int id: @accessor ref
+);
+
+associated_type_decls( //dir=decl
+ unique int id: @associated_type_decl
+);
+
+concrete_var_decls( //dir=decl
+ unique int id: @concrete_var_decl,
+ int introducer_int: int ref
+);
+
+generic_type_param_decls( //dir=decl
+ unique int id: @generic_type_param_decl
+);
+
+named_functions( //dir=decl
+ unique int id: @named_function
+);
+
+@nominal_type_decl =
+ @class_decl
+| @enum_decl
+| @protocol_decl
+| @struct_decl
+;
+
+#keyset[id]
+nominal_type_decls( //dir=decl
+ int id: @nominal_type_decl ref,
+ int type_: @type_or_none ref
+);
+
+opaque_type_decls( //dir=decl
+ unique int id: @opaque_type_decl,
+ int naming_declaration: @value_decl_or_none ref
+);
+
+#keyset[id, index]
+opaque_type_decl_opaque_generic_params( //dir=decl
+ int id: @opaque_type_decl ref,
+ int index: int ref,
+ int opaque_generic_param: @generic_type_param_type_or_none ref
+);
+
+param_decls( //dir=decl
+ unique int id: @param_decl
+);
+
+#keyset[id]
+param_decl_is_inout( //dir=decl
+ int id: @param_decl ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_vars( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var: @var_decl_or_none ref
+);
+
+type_alias_decls( //dir=decl
+ unique int id: @type_alias_decl,
+ int aliased_type: @type_or_none ref
+);
+
+class_decls( //dir=decl
+ unique int id: @class_decl
+);
+
+enum_decls( //dir=decl
+ unique int id: @enum_decl
+);
+
+protocol_decls( //dir=decl
+ unique int id: @protocol_decl
+);
+
+struct_decls( //dir=decl
+ unique int id: @struct_decl
+);
+
+arguments( //dir=expr
+ unique int id: @argument,
+ string label: string ref,
+ int expr: @expr_or_none ref
+);
+
+@expr =
+ @any_try_expr
+| @applied_property_wrapper_expr
+| @apply_expr
+| @assign_expr
+| @bind_optional_expr
+| @capture_list_expr
+| @closure_expr
+| @collection_expr
+| @consume_expr
+| @copy_expr
+| @decl_ref_expr
+| @default_argument_expr
+| @discard_assignment_expr
+| @dot_syntax_base_ignored_expr
+| @dynamic_type_expr
+| @enum_is_case_expr
+| @error_expr
+| @explicit_cast_expr
+| @force_value_expr
+| @identity_expr
+| @if_expr
+| @implicit_conversion_expr
+| @in_out_expr
+| @key_path_application_expr
+| @key_path_dot_expr
+| @key_path_expr
+| @lazy_initialization_expr
+| @literal_expr
+| @lookup_expr
+| @make_temporarily_escapable_expr
+| @materialize_pack_expr
+| @obj_c_selector_expr
+| @one_way_expr
+| @opaque_value_expr
+| @open_existential_expr
+| @optional_evaluation_expr
+| @other_initializer_ref_expr
+| @overloaded_decl_ref_expr
+| @pack_element_expr
+| @pack_expansion_expr
+| @property_wrapper_value_placeholder_expr
+| @rebind_self_in_initializer_expr
+| @sequence_expr
+| @single_value_stmt_expr
+| @super_ref_expr
+| @tap_expr
+| @tuple_element_expr
+| @tuple_expr
+| @type_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @vararg_expansion_expr
+;
+
+#keyset[id]
+expr_types( //dir=expr
+ int id: @expr ref,
+ int type_: @type_or_none ref
+);
+
+@any_try_expr =
+ @force_try_expr
+| @optional_try_expr
+| @try_expr
+;
+
+#keyset[id]
+any_try_exprs( //dir=expr
+ int id: @any_try_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+applied_property_wrapper_exprs( //dir=expr
+ unique int id: @applied_property_wrapper_expr,
+ int kind: int ref,
+ int value: @expr_or_none ref,
+ int param: @param_decl_or_none ref
+);
+
+@apply_expr =
+ @binary_expr
+| @call_expr
+| @postfix_unary_expr
+| @prefix_unary_expr
+| @self_apply_expr
+;
+
+#keyset[id]
+apply_exprs( //dir=expr
+ int id: @apply_expr ref,
+ int function: @expr_or_none ref
+);
+
+#keyset[id, index]
+apply_expr_arguments( //dir=expr
+ int id: @apply_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+assign_exprs( //dir=expr
+ unique int id: @assign_expr,
+ int dest: @expr_or_none ref,
+ int source: @expr_or_none ref
+);
+
+bind_optional_exprs( //dir=expr
+ unique int id: @bind_optional_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+capture_list_exprs( //dir=expr
+ unique int id: @capture_list_expr,
+ int closure_body: @closure_expr_or_none ref
+);
+
+#keyset[id, index]
+capture_list_expr_binding_decls( //dir=expr
+ int id: @capture_list_expr ref,
+ int index: int ref,
+ int binding_decl: @pattern_binding_decl_or_none ref
+);
+
+@closure_expr =
+ @auto_closure_expr
+| @explicit_closure_expr
+;
+
+@collection_expr =
+ @array_expr
+| @dictionary_expr
+;
+
+consume_exprs( //dir=expr
+ unique int id: @consume_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+copy_exprs( //dir=expr
+ unique int id: @copy_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+decl_ref_exprs( //dir=expr
+ unique int id: @decl_ref_expr,
+ int decl: @decl_or_none ref
+);
+
+#keyset[id, index]
+decl_ref_expr_replacement_types( //dir=expr
+ int id: @decl_ref_expr ref,
+ int index: int ref,
+ int replacement_type: @type_or_none ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+default_argument_exprs( //dir=expr
+ unique int id: @default_argument_expr,
+ int param_decl: @param_decl_or_none ref,
+ int param_index: int ref
+);
+
+#keyset[id]
+default_argument_expr_caller_side_defaults( //dir=expr
+ int id: @default_argument_expr ref,
+ int caller_side_default: @expr_or_none ref
+);
+
+discard_assignment_exprs( //dir=expr
+ unique int id: @discard_assignment_expr
+);
+
+dot_syntax_base_ignored_exprs( //dir=expr
+ unique int id: @dot_syntax_base_ignored_expr,
+ int qualifier: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+dynamic_type_exprs( //dir=expr
+ unique int id: @dynamic_type_expr,
+ int base: @expr_or_none ref
+);
+
+enum_is_case_exprs( //dir=expr
+ unique int id: @enum_is_case_expr,
+ int sub_expr: @expr_or_none ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+error_exprs( //dir=expr
+ unique int id: @error_expr
+);
+
+@explicit_cast_expr =
+ @checked_cast_expr
+| @coerce_expr
+;
+
+#keyset[id]
+explicit_cast_exprs( //dir=expr
+ int id: @explicit_cast_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+force_value_exprs( //dir=expr
+ unique int id: @force_value_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@identity_expr =
+ @await_expr
+| @borrow_expr
+| @dot_self_expr
+| @paren_expr
+| @unresolved_member_chain_result_expr
+;
+
+#keyset[id]
+identity_exprs( //dir=expr
+ int id: @identity_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+if_exprs( //dir=expr
+ unique int id: @if_expr,
+ int condition: @expr_or_none ref,
+ int then_expr: @expr_or_none ref,
+ int else_expr: @expr_or_none ref
+);
+
+@implicit_conversion_expr =
+ @abi_safe_conversion_expr
+| @any_hashable_erasure_expr
+| @archetype_to_super_expr
+| @array_to_pointer_expr
+| @bridge_from_obj_c_expr
+| @bridge_to_obj_c_expr
+| @class_metatype_to_object_expr
+| @collection_upcast_conversion_expr
+| @conditional_bridge_from_obj_c_expr
+| @covariant_function_conversion_expr
+| @covariant_return_conversion_expr
+| @derived_to_base_expr
+| @destructure_tuple_expr
+| @differentiable_function_expr
+| @differentiable_function_extract_original_expr
+| @erasure_expr
+| @existential_metatype_to_object_expr
+| @foreign_object_conversion_expr
+| @function_conversion_expr
+| @in_out_to_pointer_expr
+| @inject_into_optional_expr
+| @linear_function_expr
+| @linear_function_extract_original_expr
+| @linear_to_differentiable_function_expr
+| @load_expr
+| @metatype_conversion_expr
+| @pointer_to_pointer_expr
+| @protocol_metatype_to_object_expr
+| @string_to_pointer_expr
+| @underlying_to_opaque_expr
+| @unevaluated_instance_expr
+| @unresolved_type_conversion_expr
+;
+
+#keyset[id]
+implicit_conversion_exprs( //dir=expr
+ int id: @implicit_conversion_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+in_out_exprs( //dir=expr
+ unique int id: @in_out_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+key_path_application_exprs( //dir=expr
+ unique int id: @key_path_application_expr,
+ int base: @expr_or_none ref,
+ int key_path: @expr_or_none ref
+);
+
+key_path_dot_exprs( //dir=expr
+ unique int id: @key_path_dot_expr
+);
+
+key_path_exprs( //dir=expr
+ unique int id: @key_path_expr
+);
+
+#keyset[id]
+key_path_expr_roots( //dir=expr
+ int id: @key_path_expr ref,
+ int root: @type_repr_or_none ref
+);
+
+#keyset[id, index]
+key_path_expr_components( //dir=expr
+ int id: @key_path_expr ref,
+ int index: int ref,
+ int component: @key_path_component_or_none ref
+);
+
+lazy_initialization_exprs( //dir=expr
+ unique int id: @lazy_initialization_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@literal_expr =
+ @builtin_literal_expr
+| @interpolated_string_literal_expr
+| @nil_literal_expr
+| @object_literal_expr
+| @regex_literal_expr
+;
+
+@lookup_expr =
+ @dynamic_lookup_expr
+| @member_ref_expr
+| @subscript_expr
+;
+
+#keyset[id]
+lookup_exprs( //dir=expr
+ int id: @lookup_expr ref,
+ int base: @expr_or_none ref
+);
+
+#keyset[id]
+lookup_expr_members( //dir=expr
+ int id: @lookup_expr ref,
+ int member: @decl_or_none ref
+);
+
+make_temporarily_escapable_exprs( //dir=expr
+ unique int id: @make_temporarily_escapable_expr,
+ int escaping_closure: @opaque_value_expr_or_none ref,
+ int nonescaping_closure: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+materialize_pack_exprs( //dir=expr
+ unique int id: @materialize_pack_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+obj_c_selector_exprs( //dir=expr
+ unique int id: @obj_c_selector_expr,
+ int sub_expr: @expr_or_none ref,
+ int method: @function_or_none ref
+);
+
+one_way_exprs( //dir=expr
+ unique int id: @one_way_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+opaque_value_exprs( //dir=expr
+ unique int id: @opaque_value_expr
+);
+
+open_existential_exprs( //dir=expr
+ unique int id: @open_existential_expr,
+ int sub_expr: @expr_or_none ref,
+ int existential: @expr_or_none ref,
+ int opaque_expr: @opaque_value_expr_or_none ref
+);
+
+optional_evaluation_exprs( //dir=expr
+ unique int id: @optional_evaluation_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+other_initializer_ref_exprs( //dir=expr
+ unique int id: @other_initializer_ref_expr,
+ int initializer: @initializer_or_none ref
+);
+
+overloaded_decl_ref_exprs( //dir=expr
+ unique int id: @overloaded_decl_ref_expr
+);
+
+#keyset[id, index]
+overloaded_decl_ref_expr_possible_declarations( //dir=expr
+ int id: @overloaded_decl_ref_expr ref,
+ int index: int ref,
+ int possible_declaration: @value_decl_or_none ref
+);
+
+pack_element_exprs( //dir=expr
+ unique int id: @pack_element_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+pack_expansion_exprs( //dir=expr
+ unique int id: @pack_expansion_expr,
+ int pattern_expr: @expr_or_none ref
+);
+
+property_wrapper_value_placeholder_exprs( //dir=expr
+ unique int id: @property_wrapper_value_placeholder_expr,
+ int placeholder: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr
+ int id: @property_wrapper_value_placeholder_expr ref,
+ int wrapped_value: @expr_or_none ref
+);
+
+rebind_self_in_initializer_exprs( //dir=expr
+ unique int id: @rebind_self_in_initializer_expr,
+ int sub_expr: @expr_or_none ref,
+ int self: @var_decl_or_none ref
+);
+
+sequence_exprs( //dir=expr
+ unique int id: @sequence_expr
+);
+
+#keyset[id, index]
+sequence_expr_elements( //dir=expr
+ int id: @sequence_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+single_value_stmt_exprs( //dir=expr
+ unique int id: @single_value_stmt_expr,
+ int stmt: @stmt_or_none ref
+);
+
+super_ref_exprs( //dir=expr
+ unique int id: @super_ref_expr,
+ int self: @var_decl_or_none ref
+);
+
+tap_exprs( //dir=expr
+ unique int id: @tap_expr,
+ int body: @brace_stmt_or_none ref,
+ int var: @var_decl_or_none ref
+);
+
+#keyset[id]
+tap_expr_sub_exprs( //dir=expr
+ int id: @tap_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+tuple_element_exprs( //dir=expr
+ unique int id: @tuple_element_expr,
+ int sub_expr: @expr_or_none ref,
+ int index: int ref
+);
+
+tuple_exprs( //dir=expr
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_elements( //dir=expr
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+type_exprs( //dir=expr
+ unique int id: @type_expr
+);
+
+#keyset[id]
+type_expr_type_reprs( //dir=expr
+ int id: @type_expr ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+unresolved_decl_ref_exprs( //dir=expr
+ unique int id: @unresolved_decl_ref_expr
+);
+
+#keyset[id]
+unresolved_decl_ref_expr_names( //dir=expr
+ int id: @unresolved_decl_ref_expr ref,
+ string name: string ref
+);
+
+unresolved_dot_exprs( //dir=expr
+ unique int id: @unresolved_dot_expr,
+ int base: @expr_or_none ref,
+ string name: string ref
+);
+
+unresolved_member_exprs( //dir=expr
+ unique int id: @unresolved_member_expr,
+ string name: string ref
+);
+
+unresolved_pattern_exprs( //dir=expr
+ unique int id: @unresolved_pattern_expr,
+ int sub_pattern: @pattern_or_none ref
+);
+
+unresolved_specialize_exprs( //dir=expr
+ unique int id: @unresolved_specialize_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+vararg_expansion_exprs( //dir=expr
+ unique int id: @vararg_expansion_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+abi_safe_conversion_exprs( //dir=expr
+ unique int id: @abi_safe_conversion_expr
+);
+
+any_hashable_erasure_exprs( //dir=expr
+ unique int id: @any_hashable_erasure_expr
+);
+
+archetype_to_super_exprs( //dir=expr
+ unique int id: @archetype_to_super_expr
+);
+
+array_exprs( //dir=expr
+ unique int id: @array_expr
+);
+
+#keyset[id, index]
+array_expr_elements( //dir=expr
+ int id: @array_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+array_to_pointer_exprs( //dir=expr
+ unique int id: @array_to_pointer_expr
+);
+
+auto_closure_exprs( //dir=expr
+ unique int id: @auto_closure_expr
+);
+
+await_exprs( //dir=expr
+ unique int id: @await_expr
+);
+
+binary_exprs( //dir=expr
+ unique int id: @binary_expr
+);
+
+borrow_exprs( //dir=expr
+ unique int id: @borrow_expr
+);
+
+bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @bridge_from_obj_c_expr
+);
+
+bridge_to_obj_c_exprs( //dir=expr
+ unique int id: @bridge_to_obj_c_expr
+);
+
+@builtin_literal_expr =
+ @boolean_literal_expr
+| @magic_identifier_literal_expr
+| @number_literal_expr
+| @string_literal_expr
+;
+
+call_exprs( //dir=expr
+ unique int id: @call_expr
+);
+
+@checked_cast_expr =
+ @conditional_checked_cast_expr
+| @forced_checked_cast_expr
+| @is_expr
+;
+
+class_metatype_to_object_exprs( //dir=expr
+ unique int id: @class_metatype_to_object_expr
+);
+
+coerce_exprs( //dir=expr
+ unique int id: @coerce_expr
+);
+
+collection_upcast_conversion_exprs( //dir=expr
+ unique int id: @collection_upcast_conversion_expr
+);
+
+conditional_bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @conditional_bridge_from_obj_c_expr
+);
+
+covariant_function_conversion_exprs( //dir=expr
+ unique int id: @covariant_function_conversion_expr
+);
+
+covariant_return_conversion_exprs( //dir=expr
+ unique int id: @covariant_return_conversion_expr
+);
+
+derived_to_base_exprs( //dir=expr
+ unique int id: @derived_to_base_expr
+);
+
+destructure_tuple_exprs( //dir=expr
+ unique int id: @destructure_tuple_expr
+);
+
+dictionary_exprs( //dir=expr
+ unique int id: @dictionary_expr
+);
+
+#keyset[id, index]
+dictionary_expr_elements( //dir=expr
+ int id: @dictionary_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+differentiable_function_exprs( //dir=expr
+ unique int id: @differentiable_function_expr
+);
+
+differentiable_function_extract_original_exprs( //dir=expr
+ unique int id: @differentiable_function_extract_original_expr
+);
+
+dot_self_exprs( //dir=expr
+ unique int id: @dot_self_expr
+);
+
+@dynamic_lookup_expr =
+ @dynamic_member_ref_expr
+| @dynamic_subscript_expr
+;
+
+erasure_exprs( //dir=expr
+ unique int id: @erasure_expr
+);
+
+existential_metatype_to_object_exprs( //dir=expr
+ unique int id: @existential_metatype_to_object_expr
+);
+
+explicit_closure_exprs( //dir=expr
+ unique int id: @explicit_closure_expr
+);
+
+force_try_exprs( //dir=expr
+ unique int id: @force_try_expr
+);
+
+foreign_object_conversion_exprs( //dir=expr
+ unique int id: @foreign_object_conversion_expr
+);
+
+function_conversion_exprs( //dir=expr
+ unique int id: @function_conversion_expr
+);
+
+in_out_to_pointer_exprs( //dir=expr
+ unique int id: @in_out_to_pointer_expr
+);
+
+inject_into_optional_exprs( //dir=expr
+ unique int id: @inject_into_optional_expr
+);
+
+interpolated_string_literal_exprs( //dir=expr
+ unique int id: @interpolated_string_literal_expr
+);
+
+#keyset[id]
+interpolated_string_literal_expr_interpolation_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int interpolation_expr: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+interpolated_string_literal_expr_appending_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int appending_expr: @tap_expr_or_none ref
+);
+
+linear_function_exprs( //dir=expr
+ unique int id: @linear_function_expr
+);
+
+linear_function_extract_original_exprs( //dir=expr
+ unique int id: @linear_function_extract_original_expr
+);
+
+linear_to_differentiable_function_exprs( //dir=expr
+ unique int id: @linear_to_differentiable_function_expr
+);
+
+load_exprs( //dir=expr
+ unique int id: @load_expr
+);
+
+member_ref_exprs( //dir=expr
+ unique int id: @member_ref_expr
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+metatype_conversion_exprs( //dir=expr
+ unique int id: @metatype_conversion_expr
+);
+
+nil_literal_exprs( //dir=expr
+ unique int id: @nil_literal_expr
+);
+
+object_literal_exprs( //dir=expr
+ unique int id: @object_literal_expr,
+ int kind: int ref
+);
+
+#keyset[id, index]
+object_literal_expr_arguments( //dir=expr
+ int id: @object_literal_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+optional_try_exprs( //dir=expr
+ unique int id: @optional_try_expr
+);
+
+paren_exprs( //dir=expr
+ unique int id: @paren_expr
+);
+
+pointer_to_pointer_exprs( //dir=expr
+ unique int id: @pointer_to_pointer_expr
+);
+
+postfix_unary_exprs( //dir=expr
+ unique int id: @postfix_unary_expr
+);
+
+prefix_unary_exprs( //dir=expr
+ unique int id: @prefix_unary_expr
+);
+
+protocol_metatype_to_object_exprs( //dir=expr
+ unique int id: @protocol_metatype_to_object_expr
+);
+
+regex_literal_exprs( //dir=expr
+ unique int id: @regex_literal_expr,
+ string pattern: string ref,
+ int version: int ref
+);
+
+@self_apply_expr =
+ @dot_syntax_call_expr
+| @initializer_ref_call_expr
+;
+
+#keyset[id]
+self_apply_exprs( //dir=expr
+ int id: @self_apply_expr ref,
+ int base: @expr_or_none ref
+);
+
+string_to_pointer_exprs( //dir=expr
+ unique int id: @string_to_pointer_expr
+);
+
+subscript_exprs( //dir=expr
+ unique int id: @subscript_expr
+);
+
+#keyset[id, index]
+subscript_expr_arguments( //dir=expr
+ int id: @subscript_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_ordinary_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+try_exprs( //dir=expr
+ unique int id: @try_expr
+);
+
+underlying_to_opaque_exprs( //dir=expr
+ unique int id: @underlying_to_opaque_expr
+);
+
+unevaluated_instance_exprs( //dir=expr
+ unique int id: @unevaluated_instance_expr
+);
+
+unresolved_member_chain_result_exprs( //dir=expr
+ unique int id: @unresolved_member_chain_result_expr
+);
+
+unresolved_type_conversion_exprs( //dir=expr
+ unique int id: @unresolved_type_conversion_expr
+);
+
+boolean_literal_exprs( //dir=expr
+ unique int id: @boolean_literal_expr,
+ boolean value: boolean ref
+);
+
+conditional_checked_cast_exprs( //dir=expr
+ unique int id: @conditional_checked_cast_expr
+);
+
+dot_syntax_call_exprs( //dir=expr
+ unique int id: @dot_syntax_call_expr
+);
+
+dynamic_member_ref_exprs( //dir=expr
+ unique int id: @dynamic_member_ref_expr
+);
+
+dynamic_subscript_exprs( //dir=expr
+ unique int id: @dynamic_subscript_expr
+);
+
+forced_checked_cast_exprs( //dir=expr
+ unique int id: @forced_checked_cast_expr
+);
+
+initializer_ref_call_exprs( //dir=expr
+ unique int id: @initializer_ref_call_expr
+);
+
+is_exprs( //dir=expr
+ unique int id: @is_expr
+);
+
+magic_identifier_literal_exprs( //dir=expr
+ unique int id: @magic_identifier_literal_expr,
+ string kind: string ref
+);
+
+@number_literal_expr =
+ @float_literal_expr
+| @integer_literal_expr
+;
+
+string_literal_exprs( //dir=expr
+ unique int id: @string_literal_expr,
+ string value: string ref
+);
+
+float_literal_exprs( //dir=expr
+ unique int id: @float_literal_expr,
+ string string_value: string ref
+);
+
+integer_literal_exprs( //dir=expr
+ unique int id: @integer_literal_expr,
+ string string_value: string ref
+);
+
+@pattern =
+ @any_pattern
+| @binding_pattern
+| @bool_pattern
+| @enum_element_pattern
+| @expr_pattern
+| @is_pattern
+| @named_pattern
+| @optional_some_pattern
+| @paren_pattern
+| @tuple_pattern
+| @typed_pattern
+;
+
+#keyset[id]
+pattern_types( //dir=pattern
+ int id: @pattern ref,
+ int type_: @type_or_none ref
+);
+
+any_patterns( //dir=pattern
+ unique int id: @any_pattern
+);
+
+binding_patterns( //dir=pattern
+ unique int id: @binding_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+bool_patterns( //dir=pattern
+ unique int id: @bool_pattern,
+ boolean value: boolean ref
+);
+
+enum_element_patterns( //dir=pattern
+ unique int id: @enum_element_pattern,
+ int element: @enum_element_decl_or_none ref
+);
+
+#keyset[id]
+enum_element_pattern_sub_patterns( //dir=pattern
+ int id: @enum_element_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+expr_patterns( //dir=pattern
+ unique int id: @expr_pattern,
+ int sub_expr: @expr_or_none ref
+);
+
+is_patterns( //dir=pattern
+ unique int id: @is_pattern
+);
+
+#keyset[id]
+is_pattern_cast_type_reprs( //dir=pattern
+ int id: @is_pattern ref,
+ int cast_type_repr: @type_repr_or_none ref
+);
+
+#keyset[id]
+is_pattern_sub_patterns( //dir=pattern
+ int id: @is_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+named_patterns( //dir=pattern
+ unique int id: @named_pattern,
+ int var_decl: @var_decl_or_none ref
+);
+
+optional_some_patterns( //dir=pattern
+ unique int id: @optional_some_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+paren_patterns( //dir=pattern
+ unique int id: @paren_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+tuple_patterns( //dir=pattern
+ unique int id: @tuple_pattern
+);
+
+#keyset[id, index]
+tuple_pattern_elements( //dir=pattern
+ int id: @tuple_pattern ref,
+ int index: int ref,
+ int element: @pattern_or_none ref
+);
+
+typed_patterns( //dir=pattern
+ unique int id: @typed_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+typed_pattern_type_reprs( //dir=pattern
+ int id: @typed_pattern ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+case_label_items( //dir=stmt
+ unique int id: @case_label_item,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+case_label_item_guards( //dir=stmt
+ int id: @case_label_item ref,
+ int guard: @expr_or_none ref
+);
+
+condition_elements( //dir=stmt
+ unique int id: @condition_element
+);
+
+#keyset[id]
+condition_element_booleans( //dir=stmt
+ int id: @condition_element ref,
+ int boolean_: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_patterns( //dir=stmt
+ int id: @condition_element ref,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+condition_element_initializers( //dir=stmt
+ int id: @condition_element ref,
+ int initializer: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_availabilities( //dir=stmt
+ int id: @condition_element ref,
+ int availability: @availability_info_or_none ref
+);
+
+@stmt =
+ @brace_stmt
+| @break_stmt
+| @case_stmt
+| @continue_stmt
+| @defer_stmt
+| @discard_stmt
+| @fail_stmt
+| @fallthrough_stmt
+| @labeled_stmt
+| @pound_assert_stmt
+| @return_stmt
+| @then_stmt
+| @throw_stmt
+| @yield_stmt
+;
+
+stmt_conditions( //dir=stmt
+ unique int id: @stmt_condition
+);
+
+#keyset[id, index]
+stmt_condition_elements( //dir=stmt
+ int id: @stmt_condition ref,
+ int index: int ref,
+ int element: @condition_element_or_none ref
+);
+
+brace_stmts( //dir=stmt
+ unique int id: @brace_stmt
+);
+
+#keyset[id, index]
+brace_stmt_elements( //dir=stmt
+ int id: @brace_stmt ref,
+ int index: int ref,
+ int element: @ast_node_or_none ref
+);
+
+break_stmts( //dir=stmt
+ unique int id: @break_stmt
+);
+
+#keyset[id]
+break_stmt_target_names( //dir=stmt
+ int id: @break_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+break_stmt_targets( //dir=stmt
+ int id: @break_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+case_stmts( //dir=stmt
+ unique int id: @case_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_labels( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int label: @case_label_item_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_variables( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+continue_stmts( //dir=stmt
+ unique int id: @continue_stmt
+);
+
+#keyset[id]
+continue_stmt_target_names( //dir=stmt
+ int id: @continue_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+continue_stmt_targets( //dir=stmt
+ int id: @continue_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+defer_stmts( //dir=stmt
+ unique int id: @defer_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+discard_stmts( //dir=stmt
+ unique int id: @discard_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+fail_stmts( //dir=stmt
+ unique int id: @fail_stmt
+);
+
+fallthrough_stmts( //dir=stmt
+ unique int id: @fallthrough_stmt,
+ int fallthrough_source: @case_stmt_or_none ref,
+ int fallthrough_dest: @case_stmt_or_none ref
+);
+
+@labeled_stmt =
+ @do_catch_stmt
+| @do_stmt
+| @for_each_stmt
+| @labeled_conditional_stmt
+| @repeat_while_stmt
+| @switch_stmt
+;
+
+#keyset[id]
+labeled_stmt_labels( //dir=stmt
+ int id: @labeled_stmt ref,
+ string label: string ref
+);
+
+pound_assert_stmts( //dir=stmt
+ unique int id: @pound_assert_stmt,
+ int condition: @expr_or_none ref,
+ string message: string ref
+);
+
+return_stmts( //dir=stmt
+ unique int id: @return_stmt
+);
+
+#keyset[id]
+return_stmt_results( //dir=stmt
+ int id: @return_stmt ref,
+ int result: @expr_or_none ref
+);
+
+then_stmts( //dir=stmt
+ unique int id: @then_stmt,
+ int result: @expr_or_none ref
+);
+
+throw_stmts( //dir=stmt
+ unique int id: @throw_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+yield_stmts( //dir=stmt
+ unique int id: @yield_stmt
+);
+
+#keyset[id, index]
+yield_stmt_results( //dir=stmt
+ int id: @yield_stmt ref,
+ int index: int ref,
+ int result: @expr_or_none ref
+);
+
+do_catch_stmts( //dir=stmt
+ unique int id: @do_catch_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+do_catch_stmt_catches( //dir=stmt
+ int id: @do_catch_stmt ref,
+ int index: int ref,
+ int catch: @case_stmt_or_none ref
+);
+
+do_stmts( //dir=stmt
+ unique int id: @do_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+for_each_stmts( //dir=stmt
+ unique int id: @for_each_stmt,
+ int pattern: @pattern_or_none ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+for_each_stmt_variables( //dir=stmt
+ int id: @for_each_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_wheres( //dir=stmt
+ int id: @for_each_stmt ref,
+ int where: @expr_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_iterator_vars( //dir=stmt
+ int id: @for_each_stmt ref,
+ int iteratorVar: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_next_calls( //dir=stmt
+ int id: @for_each_stmt ref,
+ int nextCall: @expr_or_none ref
+);
+
+@labeled_conditional_stmt =
+ @guard_stmt
+| @if_stmt
+| @while_stmt
+;
+
+#keyset[id]
+labeled_conditional_stmts( //dir=stmt
+ int id: @labeled_conditional_stmt ref,
+ int condition: @stmt_condition_or_none ref
+);
+
+repeat_while_stmts( //dir=stmt
+ unique int id: @repeat_while_stmt,
+ int condition: @expr_or_none ref,
+ int body: @stmt_or_none ref
+);
+
+switch_stmts( //dir=stmt
+ unique int id: @switch_stmt,
+ int expr: @expr_or_none ref
+);
+
+#keyset[id, index]
+switch_stmt_cases( //dir=stmt
+ int id: @switch_stmt ref,
+ int index: int ref,
+ int case_: @case_stmt_or_none ref
+);
+
+guard_stmts( //dir=stmt
+ unique int id: @guard_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+if_stmts( //dir=stmt
+ unique int id: @if_stmt,
+ int then: @stmt_or_none ref
+);
+
+#keyset[id]
+if_stmt_elses( //dir=stmt
+ int id: @if_stmt ref,
+ int else: @stmt_or_none ref
+);
+
+while_stmts( //dir=stmt
+ unique int id: @while_stmt,
+ int body: @stmt_or_none ref
+);
+
+@type =
+ @any_function_type
+| @any_generic_type
+| @any_metatype_type
+| @builtin_type
+| @dependent_member_type
+| @dynamic_self_type
+| @error_type
+| @existential_type
+| @in_out_type
+| @l_value_type
+| @module_type
+| @pack_element_type
+| @pack_expansion_type
+| @pack_type
+| @parameterized_protocol_type
+| @protocol_composition_type
+| @reference_storage_type
+| @substitutable_type
+| @sugar_type
+| @tuple_type
+| @unresolved_type
+;
+
+#keyset[id]
+types( //dir=type
+ int id: @type ref,
+ string name: string ref,
+ int canonical_type: @type_or_none ref
+);
+
+type_reprs( //dir=type
+ unique int id: @type_repr,
+ int type_: @type_or_none ref
+);
+
+@any_function_type =
+ @function_type
+| @generic_function_type
+;
+
+#keyset[id]
+any_function_types( //dir=type
+ int id: @any_function_type ref,
+ int result: @type_or_none ref
+);
+
+#keyset[id, index]
+any_function_type_param_types( //dir=type
+ int id: @any_function_type ref,
+ int index: int ref,
+ int param_type: @type_or_none ref
+);
+
+#keyset[id]
+any_function_type_is_throwing( //dir=type
+ int id: @any_function_type ref
+);
+
+#keyset[id]
+any_function_type_is_async( //dir=type
+ int id: @any_function_type ref
+);
+
+@any_generic_type =
+ @nominal_or_bound_generic_nominal_type
+| @unbound_generic_type
+;
+
+#keyset[id]
+any_generic_types( //dir=type
+ int id: @any_generic_type ref,
+ int declaration: @generic_type_decl_or_none ref
+);
+
+#keyset[id]
+any_generic_type_parents( //dir=type
+ int id: @any_generic_type ref,
+ int parent: @type_or_none ref
+);
+
+@any_metatype_type =
+ @existential_metatype_type
+| @metatype_type
+;
+
+@builtin_type =
+ @any_builtin_integer_type
+| @builtin_bridge_object_type
+| @builtin_default_actor_storage_type
+| @builtin_executor_type
+| @builtin_float_type
+| @builtin_job_type
+| @builtin_native_object_type
+| @builtin_raw_pointer_type
+| @builtin_raw_unsafe_continuation_type
+| @builtin_unsafe_value_buffer_type
+| @builtin_vector_type
+;
+
+dependent_member_types( //dir=type
+ unique int id: @dependent_member_type,
+ int base_type: @type_or_none ref,
+ int associated_type_decl: @associated_type_decl_or_none ref
+);
+
+dynamic_self_types( //dir=type
+ unique int id: @dynamic_self_type,
+ int static_self_type: @type_or_none ref
+);
+
+error_types( //dir=type
+ unique int id: @error_type
+);
+
+existential_types( //dir=type
+ unique int id: @existential_type,
+ int constraint: @type_or_none ref
+);
+
+in_out_types( //dir=type
+ unique int id: @in_out_type,
+ int object_type: @type_or_none ref
+);
+
+l_value_types( //dir=type
+ unique int id: @l_value_type,
+ int object_type: @type_or_none ref
+);
+
+module_types( //dir=type
+ unique int id: @module_type,
+ int module: @module_decl_or_none ref
+);
+
+pack_element_types( //dir=type
+ unique int id: @pack_element_type,
+ int pack_type: @type_or_none ref
+);
+
+pack_expansion_types( //dir=type
+ unique int id: @pack_expansion_type,
+ int pattern_type: @type_or_none ref,
+ int count_type: @type_or_none ref
+);
+
+pack_types( //dir=type
+ unique int id: @pack_type
+);
+
+#keyset[id, index]
+pack_type_elements( //dir=type
+ int id: @pack_type ref,
+ int index: int ref,
+ int element: @type_or_none ref
+);
+
+parameterized_protocol_types( //dir=type
+ unique int id: @parameterized_protocol_type,
+ int base: @protocol_type_or_none ref
+);
+
+#keyset[id, index]
+parameterized_protocol_type_args( //dir=type
+ int id: @parameterized_protocol_type ref,
+ int index: int ref,
+ int arg: @type_or_none ref
+);
+
+protocol_composition_types( //dir=type
+ unique int id: @protocol_composition_type
+);
+
+#keyset[id, index]
+protocol_composition_type_members( //dir=type
+ int id: @protocol_composition_type ref,
+ int index: int ref,
+ int member: @type_or_none ref
+);
+
+@reference_storage_type =
+ @unmanaged_storage_type
+| @unowned_storage_type
+| @weak_storage_type
+;
+
+#keyset[id]
+reference_storage_types( //dir=type
+ int id: @reference_storage_type ref,
+ int referent_type: @type_or_none ref
+);
+
+@substitutable_type =
+ @archetype_type
+| @generic_type_param_type
+;
+
+@sugar_type =
+ @paren_type
+| @syntax_sugar_type
+| @type_alias_type
+;
+
+tuple_types( //dir=type
+ unique int id: @tuple_type
+);
+
+#keyset[id, index]
+tuple_type_types( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id, index]
+tuple_type_names( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unresolved_types( //dir=type
+ unique int id: @unresolved_type
+);
+
+@any_builtin_integer_type =
+ @builtin_integer_literal_type
+| @builtin_integer_type
+;
+
+@archetype_type =
+ @local_archetype_type
+| @opaque_type_archetype_type
+| @pack_archetype_type
+| @primary_archetype_type
+;
+
+#keyset[id]
+archetype_types( //dir=type
+ int id: @archetype_type ref,
+ int interface_type: @type_or_none ref
+);
+
+#keyset[id]
+archetype_type_superclasses( //dir=type
+ int id: @archetype_type ref,
+ int superclass: @type_or_none ref
+);
+
+#keyset[id, index]
+archetype_type_protocols( //dir=type
+ int id: @archetype_type ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+builtin_bridge_object_types( //dir=type
+ unique int id: @builtin_bridge_object_type
+);
+
+builtin_default_actor_storage_types( //dir=type
+ unique int id: @builtin_default_actor_storage_type
+);
+
+builtin_executor_types( //dir=type
+ unique int id: @builtin_executor_type
+);
+
+builtin_float_types( //dir=type
+ unique int id: @builtin_float_type
+);
+
+builtin_job_types( //dir=type
+ unique int id: @builtin_job_type
+);
+
+builtin_native_object_types( //dir=type
+ unique int id: @builtin_native_object_type
+);
+
+builtin_raw_pointer_types( //dir=type
+ unique int id: @builtin_raw_pointer_type
+);
+
+builtin_raw_unsafe_continuation_types( //dir=type
+ unique int id: @builtin_raw_unsafe_continuation_type
+);
+
+builtin_unsafe_value_buffer_types( //dir=type
+ unique int id: @builtin_unsafe_value_buffer_type
+);
+
+builtin_vector_types( //dir=type
+ unique int id: @builtin_vector_type
+);
+
+existential_metatype_types( //dir=type
+ unique int id: @existential_metatype_type
+);
+
+function_types( //dir=type
+ unique int id: @function_type
+);
+
+generic_function_types( //dir=type
+ unique int id: @generic_function_type
+);
+
+#keyset[id, index]
+generic_function_type_generic_params( //dir=type
+ int id: @generic_function_type ref,
+ int index: int ref,
+ int generic_param: @generic_type_param_type_or_none ref
+);
+
+generic_type_param_types( //dir=type
+ unique int id: @generic_type_param_type
+);
+
+metatype_types( //dir=type
+ unique int id: @metatype_type
+);
+
+@nominal_or_bound_generic_nominal_type =
+ @bound_generic_type
+| @nominal_type
+;
+
+paren_types( //dir=type
+ unique int id: @paren_type,
+ int type_: @type_or_none ref
+);
+
+@syntax_sugar_type =
+ @dictionary_type
+| @unary_syntax_sugar_type
+;
+
+type_alias_types( //dir=type
+ unique int id: @type_alias_type,
+ int decl: @type_alias_decl_or_none ref
+);
+
+unbound_generic_types( //dir=type
+ unique int id: @unbound_generic_type
+);
+
+unmanaged_storage_types( //dir=type
+ unique int id: @unmanaged_storage_type
+);
+
+unowned_storage_types( //dir=type
+ unique int id: @unowned_storage_type
+);
+
+weak_storage_types( //dir=type
+ unique int id: @weak_storage_type
+);
+
+@bound_generic_type =
+ @bound_generic_class_type
+| @bound_generic_enum_type
+| @bound_generic_struct_type
+;
+
+#keyset[id, index]
+bound_generic_type_arg_types( //dir=type
+ int id: @bound_generic_type ref,
+ int index: int ref,
+ int arg_type: @type_or_none ref
+);
+
+builtin_integer_literal_types( //dir=type
+ unique int id: @builtin_integer_literal_type
+);
+
+builtin_integer_types( //dir=type
+ unique int id: @builtin_integer_type
+);
+
+#keyset[id]
+builtin_integer_type_widths( //dir=type
+ int id: @builtin_integer_type ref,
+ int width: int ref
+);
+
+dictionary_types( //dir=type
+ unique int id: @dictionary_type,
+ int key_type: @type_or_none ref,
+ int value_type: @type_or_none ref
+);
+
+@local_archetype_type =
+ @element_archetype_type
+| @opened_archetype_type
+;
+
+@nominal_type =
+ @class_type
+| @enum_type
+| @protocol_type
+| @struct_type
+;
+
+opaque_type_archetype_types( //dir=type
+ unique int id: @opaque_type_archetype_type,
+ int declaration: @opaque_type_decl_or_none ref
+);
+
+pack_archetype_types( //dir=type
+ unique int id: @pack_archetype_type
+);
+
+primary_archetype_types( //dir=type
+ unique int id: @primary_archetype_type
+);
+
+@unary_syntax_sugar_type =
+ @array_slice_type
+| @optional_type
+| @variadic_sequence_type
+;
+
+#keyset[id]
+unary_syntax_sugar_types( //dir=type
+ int id: @unary_syntax_sugar_type ref,
+ int base_type: @type_or_none ref
+);
+
+array_slice_types( //dir=type
+ unique int id: @array_slice_type
+);
+
+bound_generic_class_types( //dir=type
+ unique int id: @bound_generic_class_type
+);
+
+bound_generic_enum_types( //dir=type
+ unique int id: @bound_generic_enum_type
+);
+
+bound_generic_struct_types( //dir=type
+ unique int id: @bound_generic_struct_type
+);
+
+class_types( //dir=type
+ unique int id: @class_type
+);
+
+element_archetype_types( //dir=type
+ unique int id: @element_archetype_type
+);
+
+enum_types( //dir=type
+ unique int id: @enum_type
+);
+
+opened_archetype_types( //dir=type
+ unique int id: @opened_archetype_type
+);
+
+optional_types( //dir=type
+ unique int id: @optional_type
+);
+
+protocol_types( //dir=type
+ unique int id: @protocol_type
+);
+
+struct_types( //dir=type
+ unique int id: @struct_type
+);
+
+variadic_sequence_types( //dir=type
+ unique int id: @variadic_sequence_type
+);
+
+@accessor_or_none =
+ @accessor
+| @unspecified_element
+;
+
+@argument_or_none =
+ @argument
+| @unspecified_element
+;
+
+@associated_type_decl_or_none =
+ @associated_type_decl
+| @unspecified_element
+;
+
+@ast_node_or_none =
+ @ast_node
+| @unspecified_element
+;
+
+@availability_info_or_none =
+ @availability_info
+| @unspecified_element
+;
+
+@availability_spec_or_none =
+ @availability_spec
+| @unspecified_element
+;
+
+@brace_stmt_or_none =
+ @brace_stmt
+| @unspecified_element
+;
+
+@captured_decl_or_none =
+ @captured_decl
+| @unspecified_element
+;
+
+@case_label_item_or_none =
+ @case_label_item
+| @unspecified_element
+;
+
+@case_stmt_or_none =
+ @case_stmt
+| @unspecified_element
+;
+
+@closure_expr_or_none =
+ @closure_expr
+| @unspecified_element
+;
+
+@condition_element_or_none =
+ @condition_element
+| @unspecified_element
+;
+
+@decl_or_none =
+ @decl
+| @unspecified_element
+;
+
+@enum_element_decl_or_none =
+ @enum_element_decl
+| @unspecified_element
+;
+
+@expr_or_none =
+ @expr
+| @unspecified_element
+;
+
+@file_or_none =
+ @file
+| @unspecified_element
+;
+
+@function_or_none =
+ @function
+| @unspecified_element
+;
+
+@generic_type_decl_or_none =
+ @generic_type_decl
+| @unspecified_element
+;
+
+@generic_type_param_decl_or_none =
+ @generic_type_param_decl
+| @unspecified_element
+;
+
+@generic_type_param_type_or_none =
+ @generic_type_param_type
+| @unspecified_element
+;
+
+@initializer_or_none =
+ @initializer
+| @unspecified_element
+;
+
+@key_path_component_or_none =
+ @key_path_component
+| @unspecified_element
+;
+
+@location_or_none =
+ @location
+| @unspecified_element
+;
+
+@macro_role_or_none =
+ @macro_role
+| @unspecified_element
+;
+
+@module_decl_or_none =
+ @module_decl
+| @unspecified_element
+;
+
+@nominal_type_decl_or_none =
+ @nominal_type_decl
+| @unspecified_element
+;
+
+@opaque_type_decl_or_none =
+ @opaque_type_decl
+| @unspecified_element
+;
+
+@opaque_value_expr_or_none =
+ @opaque_value_expr
+| @unspecified_element
+;
+
+@param_decl_or_none =
+ @param_decl
+| @unspecified_element
+;
+
+@pattern_or_none =
+ @pattern
+| @unspecified_element
+;
+
+@pattern_binding_decl_or_none =
+ @pattern_binding_decl
+| @unspecified_element
+;
+
+@precedence_group_decl_or_none =
+ @precedence_group_decl
+| @unspecified_element
+;
+
+@protocol_decl_or_none =
+ @protocol_decl
+| @unspecified_element
+;
+
+@protocol_type_or_none =
+ @protocol_type
+| @unspecified_element
+;
+
+@stmt_or_none =
+ @stmt
+| @unspecified_element
+;
+
+@stmt_condition_or_none =
+ @stmt_condition
+| @unspecified_element
+;
+
+@string_literal_expr_or_none =
+ @string_literal_expr
+| @unspecified_element
+;
+
+@tap_expr_or_none =
+ @tap_expr
+| @unspecified_element
+;
+
+@type_or_none =
+ @type
+| @unspecified_element
+;
+
+@type_alias_decl_or_none =
+ @type_alias_decl
+| @unspecified_element
+;
+
+@type_expr_or_none =
+ @type_expr
+| @unspecified_element
+;
+
+@type_repr_or_none =
+ @type_repr
+| @unspecified_element
+;
+
+@value_decl_or_none =
+ @unspecified_element
+| @value_decl
+;
+
+@var_decl_or_none =
+ @unspecified_element
+| @var_decl
+;
diff --git a/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/swift.dbscheme b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/swift.dbscheme
new file mode 100644
index 00000000000..be2357fd002
--- /dev/null
+++ b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/swift.dbscheme
@@ -0,0 +1,2815 @@
+// generated by codegen/codegen.py, do not edit
+
+// from prefix.dbscheme
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(
+ string prefix: string ref
+);
+
+
+// from schema.py
+
+@element =
+ @file
+| @generic_context
+| @locatable
+| @location
+| @type
+;
+
+#keyset[id]
+element_is_unknown(
+ int id: @element ref
+);
+
+@file =
+ @db_file
+;
+
+#keyset[id]
+files(
+ int id: @file ref,
+ string name: string ref
+);
+
+#keyset[id]
+file_is_successfully_extracted(
+ int id: @file ref
+);
+
+@locatable =
+ @argument
+| @ast_node
+| @comment
+| @diagnostics
+| @error_element
+;
+
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_or_none ref
+);
+
+@location =
+ @db_location
+;
+
+#keyset[id]
+locations(
+ int id: @location ref,
+ int file: @file_or_none ref,
+ int start_line: int ref,
+ int start_column: int ref,
+ int end_line: int ref,
+ int end_column: int ref
+);
+
+@ast_node =
+ @availability_info
+| @availability_spec
+| @callable
+| @case_label_item
+| @condition_element
+| @decl
+| @expr
+| @key_path_component
+| @macro_role
+| @pattern
+| @stmt
+| @stmt_condition
+| @type_repr
+;
+
+comments(
+ unique int id: @comment,
+ string text: string ref
+);
+
+db_files(
+ unique int id: @db_file
+);
+
+db_locations(
+ unique int id: @db_location
+);
+
+diagnostics(
+ unique int id: @diagnostics,
+ string text: string ref,
+ int kind: int ref
+);
+
+@error_element =
+ @error_expr
+| @error_type
+| @overloaded_decl_ref_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_chain_result_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @unresolved_type
+| @unresolved_type_conversion_expr
+| @unspecified_element
+;
+
+availability_infos(
+ unique int id: @availability_info
+);
+
+#keyset[id]
+availability_info_is_unavailable(
+ int id: @availability_info ref
+);
+
+#keyset[id, index]
+availability_info_specs(
+ int id: @availability_info ref,
+ int index: int ref,
+ int spec: @availability_spec_or_none ref
+);
+
+@availability_spec =
+ @other_availability_spec
+| @platform_version_availability_spec
+;
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_names(
+ int id: @callable ref,
+ string name: string ref
+);
+
+#keyset[id]
+callable_self_params(
+ int id: @callable ref,
+ int self_param: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+callable_params(
+ int id: @callable ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+#keyset[id]
+callable_bodies(
+ int id: @callable ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+callable_captures(
+ int id: @callable ref,
+ int index: int ref,
+ int capture: @captured_decl_or_none ref
+);
+
+key_path_components(
+ unique int id: @key_path_component,
+ int kind: int ref,
+ int component_type: @type_or_none ref
+);
+
+#keyset[id, index]
+key_path_component_subscript_arguments(
+ int id: @key_path_component ref,
+ int index: int ref,
+ int subscript_argument: @argument_or_none ref
+);
+
+#keyset[id]
+key_path_component_tuple_indices(
+ int id: @key_path_component ref,
+ int tuple_index: int ref
+);
+
+#keyset[id]
+key_path_component_decl_refs(
+ int id: @key_path_component ref,
+ int decl_ref: @value_decl_or_none ref
+);
+
+macro_roles(
+ unique int id: @macro_role,
+ int kind: int ref,
+ int macro_syntax: int ref
+);
+
+#keyset[id, index]
+macro_role_conformances(
+ int id: @macro_role ref,
+ int index: int ref,
+ int conformance: @type_expr_or_none ref
+);
+
+#keyset[id, index]
+macro_role_names(
+ int id: @macro_role ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unspecified_elements(
+ unique int id: @unspecified_element,
+ string property: string ref,
+ string error: string ref
+);
+
+#keyset[id]
+unspecified_element_parents(
+ int id: @unspecified_element ref,
+ int parent: @element ref
+);
+
+#keyset[id]
+unspecified_element_indices(
+ int id: @unspecified_element ref,
+ int index: int ref
+);
+
+#keyset[id, index]
+unspecified_element_children(
+ int id: @unspecified_element ref,
+ int index: int ref,
+ int child: @ast_node_or_none ref
+);
+
+other_availability_specs(
+ unique int id: @other_availability_spec
+);
+
+platform_version_availability_specs(
+ unique int id: @platform_version_availability_spec,
+ string platform: string ref,
+ string version: string ref
+);
+
+@decl =
+ @captured_decl
+| @enum_case_decl
+| @extension_decl
+| @if_config_decl
+| @import_decl
+| @missing_member_decl
+| @operator_decl
+| @pattern_binding_decl
+| @pound_diagnostic_decl
+| @precedence_group_decl
+| @top_level_code_decl
+| @value_decl
+;
+
+#keyset[id]
+decls( //dir=decl
+ int id: @decl ref,
+ int module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+decl_members( //dir=decl
+ int id: @decl ref,
+ int index: int ref,
+ int member: @decl_or_none ref
+);
+
+@generic_context =
+ @extension_decl
+| @function
+| @generic_type_decl
+| @macro_decl
+| @subscript_decl
+;
+
+#keyset[id, index]
+generic_context_generic_type_params( //dir=decl
+ int id: @generic_context ref,
+ int index: int ref,
+ int generic_type_param: @generic_type_param_decl_or_none ref
+);
+
+captured_decls( //dir=decl
+ unique int id: @captured_decl,
+ int decl: @value_decl_or_none ref
+);
+
+#keyset[id]
+captured_decl_is_direct( //dir=decl
+ int id: @captured_decl ref
+);
+
+#keyset[id]
+captured_decl_is_escaping( //dir=decl
+ int id: @captured_decl ref
+);
+
+enum_case_decls( //dir=decl
+ unique int id: @enum_case_decl
+);
+
+#keyset[id, index]
+enum_case_decl_elements( //dir=decl
+ int id: @enum_case_decl ref,
+ int index: int ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+extension_decls( //dir=decl
+ unique int id: @extension_decl,
+ int extended_type_decl: @nominal_type_decl_or_none ref
+);
+
+#keyset[id, index]
+extension_decl_protocols( //dir=decl
+ int id: @extension_decl ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+if_config_decls( //dir=decl
+ unique int id: @if_config_decl
+);
+
+#keyset[id, index]
+if_config_decl_active_elements( //dir=decl
+ int id: @if_config_decl ref,
+ int index: int ref,
+ int active_element: @ast_node_or_none ref
+);
+
+import_decls( //dir=decl
+ unique int id: @import_decl
+);
+
+#keyset[id]
+import_decl_is_exported( //dir=decl
+ int id: @import_decl ref
+);
+
+#keyset[id]
+import_decl_imported_modules( //dir=decl
+ int id: @import_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+#keyset[id, index]
+import_decl_declarations( //dir=decl
+ int id: @import_decl ref,
+ int index: int ref,
+ int declaration: @value_decl_or_none ref
+);
+
+missing_member_decls( //dir=decl
+ unique int id: @missing_member_decl,
+ string name: string ref
+);
+
+@operator_decl =
+ @infix_operator_decl
+| @postfix_operator_decl
+| @prefix_operator_decl
+;
+
+#keyset[id]
+operator_decls( //dir=decl
+ int id: @operator_decl ref,
+ string name: string ref
+);
+
+pattern_binding_decls( //dir=decl
+ unique int id: @pattern_binding_decl
+);
+
+#keyset[id, index]
+pattern_binding_decl_inits( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int init: @expr_or_none ref
+);
+
+#keyset[id, index]
+pattern_binding_decl_patterns( //dir=decl
+ int id: @pattern_binding_decl ref,
+ int index: int ref,
+ int pattern: @pattern_or_none ref
+);
+
+pound_diagnostic_decls( //dir=decl
+ unique int id: @pound_diagnostic_decl,
+ int kind: int ref,
+ int message: @string_literal_expr_or_none ref
+);
+
+precedence_group_decls( //dir=decl
+ unique int id: @precedence_group_decl
+);
+
+top_level_code_decls( //dir=decl
+ unique int id: @top_level_code_decl,
+ int body: @brace_stmt_or_none ref
+);
+
+@value_decl =
+ @abstract_storage_decl
+| @enum_element_decl
+| @function
+| @macro_decl
+| @type_decl
+;
+
+#keyset[id]
+value_decls( //dir=decl
+ int id: @value_decl ref,
+ int interface_type: @type_or_none ref
+);
+
+@abstract_storage_decl =
+ @subscript_decl
+| @var_decl
+;
+
+#keyset[id, index]
+abstract_storage_decl_accessors( //dir=decl
+ int id: @abstract_storage_decl ref,
+ int index: int ref,
+ int accessor: @accessor_or_none ref
+);
+
+enum_element_decls( //dir=decl
+ unique int id: @enum_element_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+enum_element_decl_params( //dir=decl
+ int id: @enum_element_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@function =
+ @accessor_or_named_function
+| @deinitializer
+| @initializer
+;
+
+infix_operator_decls( //dir=decl
+ unique int id: @infix_operator_decl
+);
+
+#keyset[id]
+infix_operator_decl_precedence_groups( //dir=decl
+ int id: @infix_operator_decl ref,
+ int precedence_group: @precedence_group_decl_or_none ref
+);
+
+macro_decls( //dir=decl
+ unique int id: @macro_decl,
+ string name: string ref
+);
+
+#keyset[id, index]
+macro_decl_parameters( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int parameter: @param_decl_or_none ref
+);
+
+#keyset[id, index]
+macro_decl_roles( //dir=decl
+ int id: @macro_decl ref,
+ int index: int ref,
+ int role: @macro_role_or_none ref
+);
+
+postfix_operator_decls( //dir=decl
+ unique int id: @postfix_operator_decl
+);
+
+prefix_operator_decls( //dir=decl
+ unique int id: @prefix_operator_decl
+);
+
+@type_decl =
+ @abstract_type_param_decl
+| @generic_type_decl
+| @module_decl
+;
+
+#keyset[id]
+type_decls( //dir=decl
+ int id: @type_decl ref,
+ string name: string ref
+);
+
+#keyset[id, index]
+type_decl_inherited_types( //dir=decl
+ int id: @type_decl ref,
+ int index: int ref,
+ int inherited_type: @type_or_none ref
+);
+
+@abstract_type_param_decl =
+ @associated_type_decl
+| @generic_type_param_decl
+;
+
+@accessor_or_named_function =
+ @accessor
+| @named_function
+;
+
+deinitializers( //dir=decl
+ unique int id: @deinitializer
+);
+
+@generic_type_decl =
+ @nominal_type_decl
+| @opaque_type_decl
+| @type_alias_decl
+;
+
+initializers( //dir=decl
+ unique int id: @initializer
+);
+
+module_decls( //dir=decl
+ unique int id: @module_decl
+);
+
+#keyset[id]
+module_decl_is_builtin_module( //dir=decl
+ int id: @module_decl ref
+);
+
+#keyset[id]
+module_decl_is_system_module( //dir=decl
+ int id: @module_decl ref
+);
+
+module_decl_imported_modules( //dir=decl
+ int id: @module_decl ref,
+ int imported_module: @module_decl_or_none ref
+);
+
+module_decl_exported_modules( //dir=decl
+ int id: @module_decl ref,
+ int exported_module: @module_decl_or_none ref
+);
+
+subscript_decls( //dir=decl
+ unique int id: @subscript_decl,
+ int element_type: @type_or_none ref
+);
+
+#keyset[id, index]
+subscript_decl_params( //dir=decl
+ int id: @subscript_decl ref,
+ int index: int ref,
+ int param: @param_decl_or_none ref
+);
+
+@var_decl =
+ @concrete_var_decl
+| @param_decl
+;
+
+#keyset[id]
+var_decls( //dir=decl
+ int id: @var_decl ref,
+ string name: string ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_attached_property_wrapper_types( //dir=decl
+ int id: @var_decl ref,
+ int attached_property_wrapper_type: @type_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_patterns( //dir=decl
+ int id: @var_decl ref,
+ int parent_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+var_decl_parent_initializers( //dir=decl
+ int id: @var_decl ref,
+ int parent_initializer: @expr_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_backing_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_backing_var: @var_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_var_bindings( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+var_decl_property_wrapper_projection_vars( //dir=decl
+ int id: @var_decl ref,
+ int property_wrapper_projection_var: @var_decl_or_none ref
+);
+
+accessors( //dir=decl
+ unique int id: @accessor
+);
+
+#keyset[id]
+accessor_is_getter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_setter( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_will_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_did_set( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_read( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_modify( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_address( //dir=decl
+ int id: @accessor ref
+);
+
+#keyset[id]
+accessor_is_unsafe_mutable_address( //dir=decl
+ int id: @accessor ref
+);
+
+associated_type_decls( //dir=decl
+ unique int id: @associated_type_decl
+);
+
+concrete_var_decls( //dir=decl
+ unique int id: @concrete_var_decl,
+ int introducer_int: int ref
+);
+
+generic_type_param_decls( //dir=decl
+ unique int id: @generic_type_param_decl
+);
+
+named_functions( //dir=decl
+ unique int id: @named_function
+);
+
+@nominal_type_decl =
+ @class_decl
+| @enum_decl
+| @protocol_decl
+| @struct_decl
+;
+
+#keyset[id]
+nominal_type_decls( //dir=decl
+ int id: @nominal_type_decl ref,
+ int type_: @type_or_none ref
+);
+
+opaque_type_decls( //dir=decl
+ unique int id: @opaque_type_decl,
+ int naming_declaration: @value_decl_or_none ref
+);
+
+#keyset[id, index]
+opaque_type_decl_opaque_generic_params( //dir=decl
+ int id: @opaque_type_decl ref,
+ int index: int ref,
+ int opaque_generic_param: @generic_type_param_type_or_none ref
+);
+
+param_decls( //dir=decl
+ unique int id: @param_decl
+);
+
+#keyset[id]
+param_decl_is_inout( //dir=decl
+ int id: @param_decl ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+param_decl_property_wrapper_local_wrapped_vars( //dir=decl
+ int id: @param_decl ref,
+ int property_wrapper_local_wrapped_var: @var_decl_or_none ref
+);
+
+type_alias_decls( //dir=decl
+ unique int id: @type_alias_decl,
+ int aliased_type: @type_or_none ref
+);
+
+class_decls( //dir=decl
+ unique int id: @class_decl
+);
+
+enum_decls( //dir=decl
+ unique int id: @enum_decl
+);
+
+protocol_decls( //dir=decl
+ unique int id: @protocol_decl
+);
+
+struct_decls( //dir=decl
+ unique int id: @struct_decl
+);
+
+arguments( //dir=expr
+ unique int id: @argument,
+ string label: string ref,
+ int expr: @expr_or_none ref
+);
+
+@expr =
+ @any_try_expr
+| @applied_property_wrapper_expr
+| @apply_expr
+| @assign_expr
+| @bind_optional_expr
+| @capture_list_expr
+| @closure_expr
+| @collection_expr
+| @consume_expr
+| @copy_expr
+| @current_context_isolation_expr
+| @decl_ref_expr
+| @default_argument_expr
+| @discard_assignment_expr
+| @dot_syntax_base_ignored_expr
+| @dynamic_type_expr
+| @enum_is_case_expr
+| @error_expr
+| @explicit_cast_expr
+| @extract_function_isolation_expr
+| @force_value_expr
+| @identity_expr
+| @if_expr
+| @implicit_conversion_expr
+| @in_out_expr
+| @key_path_application_expr
+| @key_path_dot_expr
+| @key_path_expr
+| @lazy_initialization_expr
+| @literal_expr
+| @lookup_expr
+| @make_temporarily_escapable_expr
+| @materialize_pack_expr
+| @obj_c_selector_expr
+| @one_way_expr
+| @opaque_value_expr
+| @open_existential_expr
+| @optional_evaluation_expr
+| @other_initializer_ref_expr
+| @overloaded_decl_ref_expr
+| @pack_element_expr
+| @pack_expansion_expr
+| @property_wrapper_value_placeholder_expr
+| @rebind_self_in_initializer_expr
+| @sequence_expr
+| @single_value_stmt_expr
+| @super_ref_expr
+| @tap_expr
+| @tuple_element_expr
+| @tuple_expr
+| @type_expr
+| @unresolved_decl_ref_expr
+| @unresolved_dot_expr
+| @unresolved_member_expr
+| @unresolved_pattern_expr
+| @unresolved_specialize_expr
+| @vararg_expansion_expr
+;
+
+#keyset[id]
+expr_types( //dir=expr
+ int id: @expr ref,
+ int type_: @type_or_none ref
+);
+
+@any_try_expr =
+ @force_try_expr
+| @optional_try_expr
+| @try_expr
+;
+
+#keyset[id]
+any_try_exprs( //dir=expr
+ int id: @any_try_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+applied_property_wrapper_exprs( //dir=expr
+ unique int id: @applied_property_wrapper_expr,
+ int kind: int ref,
+ int value: @expr_or_none ref,
+ int param: @param_decl_or_none ref
+);
+
+@apply_expr =
+ @binary_expr
+| @call_expr
+| @postfix_unary_expr
+| @prefix_unary_expr
+| @self_apply_expr
+;
+
+#keyset[id]
+apply_exprs( //dir=expr
+ int id: @apply_expr ref,
+ int function: @expr_or_none ref
+);
+
+#keyset[id, index]
+apply_expr_arguments( //dir=expr
+ int id: @apply_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+assign_exprs( //dir=expr
+ unique int id: @assign_expr,
+ int dest: @expr_or_none ref,
+ int source: @expr_or_none ref
+);
+
+bind_optional_exprs( //dir=expr
+ unique int id: @bind_optional_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+capture_list_exprs( //dir=expr
+ unique int id: @capture_list_expr,
+ int closure_body: @closure_expr_or_none ref
+);
+
+#keyset[id, index]
+capture_list_expr_binding_decls( //dir=expr
+ int id: @capture_list_expr ref,
+ int index: int ref,
+ int binding_decl: @pattern_binding_decl_or_none ref
+);
+
+@closure_expr =
+ @auto_closure_expr
+| @explicit_closure_expr
+;
+
+@collection_expr =
+ @array_expr
+| @dictionary_expr
+;
+
+consume_exprs( //dir=expr
+ unique int id: @consume_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+copy_exprs( //dir=expr
+ unique int id: @copy_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+current_context_isolation_exprs( //dir=expr
+ unique int id: @current_context_isolation_expr,
+ int actor: @expr_or_none ref
+);
+
+decl_ref_exprs( //dir=expr
+ unique int id: @decl_ref_expr,
+ int decl: @decl_or_none ref
+);
+
+#keyset[id, index]
+decl_ref_expr_replacement_types( //dir=expr
+ int id: @decl_ref_expr ref,
+ int index: int ref,
+ int replacement_type: @type_or_none ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+#keyset[id]
+decl_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @decl_ref_expr ref
+);
+
+default_argument_exprs( //dir=expr
+ unique int id: @default_argument_expr,
+ int param_decl: @param_decl_or_none ref,
+ int param_index: int ref
+);
+
+#keyset[id]
+default_argument_expr_caller_side_defaults( //dir=expr
+ int id: @default_argument_expr ref,
+ int caller_side_default: @expr_or_none ref
+);
+
+discard_assignment_exprs( //dir=expr
+ unique int id: @discard_assignment_expr
+);
+
+dot_syntax_base_ignored_exprs( //dir=expr
+ unique int id: @dot_syntax_base_ignored_expr,
+ int qualifier: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+dynamic_type_exprs( //dir=expr
+ unique int id: @dynamic_type_expr,
+ int base: @expr_or_none ref
+);
+
+enum_is_case_exprs( //dir=expr
+ unique int id: @enum_is_case_expr,
+ int sub_expr: @expr_or_none ref,
+ int element: @enum_element_decl_or_none ref
+);
+
+error_exprs( //dir=expr
+ unique int id: @error_expr
+);
+
+@explicit_cast_expr =
+ @checked_cast_expr
+| @coerce_expr
+;
+
+#keyset[id]
+explicit_cast_exprs( //dir=expr
+ int id: @explicit_cast_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+extract_function_isolation_exprs( //dir=expr
+ unique int id: @extract_function_isolation_expr,
+ int function_expr: @expr_or_none ref
+);
+
+force_value_exprs( //dir=expr
+ unique int id: @force_value_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@identity_expr =
+ @await_expr
+| @borrow_expr
+| @dot_self_expr
+| @paren_expr
+| @unresolved_member_chain_result_expr
+;
+
+#keyset[id]
+identity_exprs( //dir=expr
+ int id: @identity_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+if_exprs( //dir=expr
+ unique int id: @if_expr,
+ int condition: @expr_or_none ref,
+ int then_expr: @expr_or_none ref,
+ int else_expr: @expr_or_none ref
+);
+
+@implicit_conversion_expr =
+ @abi_safe_conversion_expr
+| @actor_isolation_erasure_expr
+| @any_hashable_erasure_expr
+| @archetype_to_super_expr
+| @array_to_pointer_expr
+| @bridge_from_obj_c_expr
+| @bridge_to_obj_c_expr
+| @class_metatype_to_object_expr
+| @collection_upcast_conversion_expr
+| @conditional_bridge_from_obj_c_expr
+| @covariant_function_conversion_expr
+| @covariant_return_conversion_expr
+| @derived_to_base_expr
+| @destructure_tuple_expr
+| @differentiable_function_expr
+| @differentiable_function_extract_original_expr
+| @erasure_expr
+| @existential_metatype_to_object_expr
+| @foreign_object_conversion_expr
+| @function_conversion_expr
+| @in_out_to_pointer_expr
+| @inject_into_optional_expr
+| @linear_function_expr
+| @linear_function_extract_original_expr
+| @linear_to_differentiable_function_expr
+| @load_expr
+| @metatype_conversion_expr
+| @pointer_to_pointer_expr
+| @protocol_metatype_to_object_expr
+| @string_to_pointer_expr
+| @underlying_to_opaque_expr
+| @unevaluated_instance_expr
+| @unreachable_expr
+| @unresolved_type_conversion_expr
+;
+
+#keyset[id]
+implicit_conversion_exprs( //dir=expr
+ int id: @implicit_conversion_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+in_out_exprs( //dir=expr
+ unique int id: @in_out_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+key_path_application_exprs( //dir=expr
+ unique int id: @key_path_application_expr,
+ int base: @expr_or_none ref,
+ int key_path: @expr_or_none ref
+);
+
+key_path_dot_exprs( //dir=expr
+ unique int id: @key_path_dot_expr
+);
+
+key_path_exprs( //dir=expr
+ unique int id: @key_path_expr
+);
+
+#keyset[id]
+key_path_expr_roots( //dir=expr
+ int id: @key_path_expr ref,
+ int root: @type_repr_or_none ref
+);
+
+#keyset[id, index]
+key_path_expr_components( //dir=expr
+ int id: @key_path_expr ref,
+ int index: int ref,
+ int component: @key_path_component_or_none ref
+);
+
+lazy_initialization_exprs( //dir=expr
+ unique int id: @lazy_initialization_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+@literal_expr =
+ @builtin_literal_expr
+| @interpolated_string_literal_expr
+| @nil_literal_expr
+| @object_literal_expr
+| @regex_literal_expr
+;
+
+@lookup_expr =
+ @dynamic_lookup_expr
+| @member_ref_expr
+| @subscript_expr
+;
+
+#keyset[id]
+lookup_exprs( //dir=expr
+ int id: @lookup_expr ref,
+ int base: @expr_or_none ref
+);
+
+#keyset[id]
+lookup_expr_members( //dir=expr
+ int id: @lookup_expr ref,
+ int member: @decl_or_none ref
+);
+
+make_temporarily_escapable_exprs( //dir=expr
+ unique int id: @make_temporarily_escapable_expr,
+ int escaping_closure: @opaque_value_expr_or_none ref,
+ int nonescaping_closure: @expr_or_none ref,
+ int sub_expr: @expr_or_none ref
+);
+
+materialize_pack_exprs( //dir=expr
+ unique int id: @materialize_pack_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+obj_c_selector_exprs( //dir=expr
+ unique int id: @obj_c_selector_expr,
+ int sub_expr: @expr_or_none ref,
+ int method: @function_or_none ref
+);
+
+one_way_exprs( //dir=expr
+ unique int id: @one_way_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+opaque_value_exprs( //dir=expr
+ unique int id: @opaque_value_expr
+);
+
+open_existential_exprs( //dir=expr
+ unique int id: @open_existential_expr,
+ int sub_expr: @expr_or_none ref,
+ int existential: @expr_or_none ref,
+ int opaque_expr: @opaque_value_expr_or_none ref
+);
+
+optional_evaluation_exprs( //dir=expr
+ unique int id: @optional_evaluation_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+other_initializer_ref_exprs( //dir=expr
+ unique int id: @other_initializer_ref_expr,
+ int initializer: @initializer_or_none ref
+);
+
+overloaded_decl_ref_exprs( //dir=expr
+ unique int id: @overloaded_decl_ref_expr
+);
+
+#keyset[id, index]
+overloaded_decl_ref_expr_possible_declarations( //dir=expr
+ int id: @overloaded_decl_ref_expr ref,
+ int index: int ref,
+ int possible_declaration: @value_decl_or_none ref
+);
+
+pack_element_exprs( //dir=expr
+ unique int id: @pack_element_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+pack_expansion_exprs( //dir=expr
+ unique int id: @pack_expansion_expr,
+ int pattern_expr: @expr_or_none ref
+);
+
+property_wrapper_value_placeholder_exprs( //dir=expr
+ unique int id: @property_wrapper_value_placeholder_expr,
+ int placeholder: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr
+ int id: @property_wrapper_value_placeholder_expr ref,
+ int wrapped_value: @expr_or_none ref
+);
+
+rebind_self_in_initializer_exprs( //dir=expr
+ unique int id: @rebind_self_in_initializer_expr,
+ int sub_expr: @expr_or_none ref,
+ int self: @var_decl_or_none ref
+);
+
+sequence_exprs( //dir=expr
+ unique int id: @sequence_expr
+);
+
+#keyset[id, index]
+sequence_expr_elements( //dir=expr
+ int id: @sequence_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+single_value_stmt_exprs( //dir=expr
+ unique int id: @single_value_stmt_expr,
+ int stmt: @stmt_or_none ref
+);
+
+super_ref_exprs( //dir=expr
+ unique int id: @super_ref_expr,
+ int self: @var_decl_or_none ref
+);
+
+tap_exprs( //dir=expr
+ unique int id: @tap_expr,
+ int body: @brace_stmt_or_none ref,
+ int var: @var_decl_or_none ref
+);
+
+#keyset[id]
+tap_expr_sub_exprs( //dir=expr
+ int id: @tap_expr ref,
+ int sub_expr: @expr_or_none ref
+);
+
+tuple_element_exprs( //dir=expr
+ unique int id: @tuple_element_expr,
+ int sub_expr: @expr_or_none ref,
+ int index: int ref
+);
+
+tuple_exprs( //dir=expr
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_elements( //dir=expr
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+type_exprs( //dir=expr
+ unique int id: @type_expr
+);
+
+#keyset[id]
+type_expr_type_reprs( //dir=expr
+ int id: @type_expr ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+unresolved_decl_ref_exprs( //dir=expr
+ unique int id: @unresolved_decl_ref_expr
+);
+
+#keyset[id]
+unresolved_decl_ref_expr_names( //dir=expr
+ int id: @unresolved_decl_ref_expr ref,
+ string name: string ref
+);
+
+unresolved_dot_exprs( //dir=expr
+ unique int id: @unresolved_dot_expr,
+ int base: @expr_or_none ref,
+ string name: string ref
+);
+
+unresolved_member_exprs( //dir=expr
+ unique int id: @unresolved_member_expr,
+ string name: string ref
+);
+
+unresolved_pattern_exprs( //dir=expr
+ unique int id: @unresolved_pattern_expr,
+ int sub_pattern: @pattern_or_none ref
+);
+
+unresolved_specialize_exprs( //dir=expr
+ unique int id: @unresolved_specialize_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+vararg_expansion_exprs( //dir=expr
+ unique int id: @vararg_expansion_expr,
+ int sub_expr: @expr_or_none ref
+);
+
+abi_safe_conversion_exprs( //dir=expr
+ unique int id: @abi_safe_conversion_expr
+);
+
+actor_isolation_erasure_exprs( //dir=expr
+ unique int id: @actor_isolation_erasure_expr
+);
+
+any_hashable_erasure_exprs( //dir=expr
+ unique int id: @any_hashable_erasure_expr
+);
+
+archetype_to_super_exprs( //dir=expr
+ unique int id: @archetype_to_super_expr
+);
+
+array_exprs( //dir=expr
+ unique int id: @array_expr
+);
+
+#keyset[id, index]
+array_expr_elements( //dir=expr
+ int id: @array_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+array_to_pointer_exprs( //dir=expr
+ unique int id: @array_to_pointer_expr
+);
+
+auto_closure_exprs( //dir=expr
+ unique int id: @auto_closure_expr
+);
+
+await_exprs( //dir=expr
+ unique int id: @await_expr
+);
+
+binary_exprs( //dir=expr
+ unique int id: @binary_expr
+);
+
+borrow_exprs( //dir=expr
+ unique int id: @borrow_expr
+);
+
+bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @bridge_from_obj_c_expr
+);
+
+bridge_to_obj_c_exprs( //dir=expr
+ unique int id: @bridge_to_obj_c_expr
+);
+
+@builtin_literal_expr =
+ @boolean_literal_expr
+| @magic_identifier_literal_expr
+| @number_literal_expr
+| @string_literal_expr
+;
+
+call_exprs( //dir=expr
+ unique int id: @call_expr
+);
+
+@checked_cast_expr =
+ @conditional_checked_cast_expr
+| @forced_checked_cast_expr
+| @is_expr
+;
+
+class_metatype_to_object_exprs( //dir=expr
+ unique int id: @class_metatype_to_object_expr
+);
+
+coerce_exprs( //dir=expr
+ unique int id: @coerce_expr
+);
+
+collection_upcast_conversion_exprs( //dir=expr
+ unique int id: @collection_upcast_conversion_expr
+);
+
+conditional_bridge_from_obj_c_exprs( //dir=expr
+ unique int id: @conditional_bridge_from_obj_c_expr
+);
+
+covariant_function_conversion_exprs( //dir=expr
+ unique int id: @covariant_function_conversion_expr
+);
+
+covariant_return_conversion_exprs( //dir=expr
+ unique int id: @covariant_return_conversion_expr
+);
+
+derived_to_base_exprs( //dir=expr
+ unique int id: @derived_to_base_expr
+);
+
+destructure_tuple_exprs( //dir=expr
+ unique int id: @destructure_tuple_expr
+);
+
+dictionary_exprs( //dir=expr
+ unique int id: @dictionary_expr
+);
+
+#keyset[id, index]
+dictionary_expr_elements( //dir=expr
+ int id: @dictionary_expr ref,
+ int index: int ref,
+ int element: @expr_or_none ref
+);
+
+differentiable_function_exprs( //dir=expr
+ unique int id: @differentiable_function_expr
+);
+
+differentiable_function_extract_original_exprs( //dir=expr
+ unique int id: @differentiable_function_extract_original_expr
+);
+
+dot_self_exprs( //dir=expr
+ unique int id: @dot_self_expr
+);
+
+@dynamic_lookup_expr =
+ @dynamic_member_ref_expr
+| @dynamic_subscript_expr
+;
+
+erasure_exprs( //dir=expr
+ unique int id: @erasure_expr
+);
+
+existential_metatype_to_object_exprs( //dir=expr
+ unique int id: @existential_metatype_to_object_expr
+);
+
+explicit_closure_exprs( //dir=expr
+ unique int id: @explicit_closure_expr
+);
+
+force_try_exprs( //dir=expr
+ unique int id: @force_try_expr
+);
+
+foreign_object_conversion_exprs( //dir=expr
+ unique int id: @foreign_object_conversion_expr
+);
+
+function_conversion_exprs( //dir=expr
+ unique int id: @function_conversion_expr
+);
+
+in_out_to_pointer_exprs( //dir=expr
+ unique int id: @in_out_to_pointer_expr
+);
+
+inject_into_optional_exprs( //dir=expr
+ unique int id: @inject_into_optional_expr
+);
+
+interpolated_string_literal_exprs( //dir=expr
+ unique int id: @interpolated_string_literal_expr
+);
+
+#keyset[id]
+interpolated_string_literal_expr_interpolation_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int interpolation_expr: @opaque_value_expr_or_none ref
+);
+
+#keyset[id]
+interpolated_string_literal_expr_appending_exprs( //dir=expr
+ int id: @interpolated_string_literal_expr ref,
+ int appending_expr: @tap_expr_or_none ref
+);
+
+linear_function_exprs( //dir=expr
+ unique int id: @linear_function_expr
+);
+
+linear_function_extract_original_exprs( //dir=expr
+ unique int id: @linear_function_extract_original_expr
+);
+
+linear_to_differentiable_function_exprs( //dir=expr
+ unique int id: @linear_to_differentiable_function_expr
+);
+
+load_exprs( //dir=expr
+ unique int id: @load_expr
+);
+
+member_ref_exprs( //dir=expr
+ unique int id: @member_ref_expr
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_ordinary_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+#keyset[id]
+member_ref_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @member_ref_expr ref
+);
+
+metatype_conversion_exprs( //dir=expr
+ unique int id: @metatype_conversion_expr
+);
+
+nil_literal_exprs( //dir=expr
+ unique int id: @nil_literal_expr
+);
+
+object_literal_exprs( //dir=expr
+ unique int id: @object_literal_expr,
+ int kind: int ref
+);
+
+#keyset[id, index]
+object_literal_expr_arguments( //dir=expr
+ int id: @object_literal_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+optional_try_exprs( //dir=expr
+ unique int id: @optional_try_expr
+);
+
+paren_exprs( //dir=expr
+ unique int id: @paren_expr
+);
+
+pointer_to_pointer_exprs( //dir=expr
+ unique int id: @pointer_to_pointer_expr
+);
+
+postfix_unary_exprs( //dir=expr
+ unique int id: @postfix_unary_expr
+);
+
+prefix_unary_exprs( //dir=expr
+ unique int id: @prefix_unary_expr
+);
+
+protocol_metatype_to_object_exprs( //dir=expr
+ unique int id: @protocol_metatype_to_object_expr
+);
+
+regex_literal_exprs( //dir=expr
+ unique int id: @regex_literal_expr,
+ string pattern: string ref,
+ int version: int ref
+);
+
+@self_apply_expr =
+ @dot_syntax_call_expr
+| @initializer_ref_call_expr
+;
+
+#keyset[id]
+self_apply_exprs( //dir=expr
+ int id: @self_apply_expr ref,
+ int base: @expr_or_none ref
+);
+
+string_to_pointer_exprs( //dir=expr
+ unique int id: @string_to_pointer_expr
+);
+
+subscript_exprs( //dir=expr
+ unique int id: @subscript_expr
+);
+
+#keyset[id, index]
+subscript_expr_arguments( //dir=expr
+ int id: @subscript_expr ref,
+ int index: int ref,
+ int argument: @argument_or_none ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_storage_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_direct_to_implementation_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_ordinary_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+#keyset[id]
+subscript_expr_has_distributed_thunk_semantics( //dir=expr
+ int id: @subscript_expr ref
+);
+
+try_exprs( //dir=expr
+ unique int id: @try_expr
+);
+
+underlying_to_opaque_exprs( //dir=expr
+ unique int id: @underlying_to_opaque_expr
+);
+
+unevaluated_instance_exprs( //dir=expr
+ unique int id: @unevaluated_instance_expr
+);
+
+unreachable_exprs( //dir=expr
+ unique int id: @unreachable_expr
+);
+
+unresolved_member_chain_result_exprs( //dir=expr
+ unique int id: @unresolved_member_chain_result_expr
+);
+
+unresolved_type_conversion_exprs( //dir=expr
+ unique int id: @unresolved_type_conversion_expr
+);
+
+boolean_literal_exprs( //dir=expr
+ unique int id: @boolean_literal_expr,
+ boolean value: boolean ref
+);
+
+conditional_checked_cast_exprs( //dir=expr
+ unique int id: @conditional_checked_cast_expr
+);
+
+dot_syntax_call_exprs( //dir=expr
+ unique int id: @dot_syntax_call_expr
+);
+
+dynamic_member_ref_exprs( //dir=expr
+ unique int id: @dynamic_member_ref_expr
+);
+
+dynamic_subscript_exprs( //dir=expr
+ unique int id: @dynamic_subscript_expr
+);
+
+forced_checked_cast_exprs( //dir=expr
+ unique int id: @forced_checked_cast_expr
+);
+
+initializer_ref_call_exprs( //dir=expr
+ unique int id: @initializer_ref_call_expr
+);
+
+is_exprs( //dir=expr
+ unique int id: @is_expr
+);
+
+magic_identifier_literal_exprs( //dir=expr
+ unique int id: @magic_identifier_literal_expr,
+ string kind: string ref
+);
+
+@number_literal_expr =
+ @float_literal_expr
+| @integer_literal_expr
+;
+
+string_literal_exprs( //dir=expr
+ unique int id: @string_literal_expr,
+ string value: string ref
+);
+
+float_literal_exprs( //dir=expr
+ unique int id: @float_literal_expr,
+ string string_value: string ref
+);
+
+integer_literal_exprs( //dir=expr
+ unique int id: @integer_literal_expr,
+ string string_value: string ref
+);
+
+@pattern =
+ @any_pattern
+| @binding_pattern
+| @bool_pattern
+| @enum_element_pattern
+| @expr_pattern
+| @is_pattern
+| @named_pattern
+| @optional_some_pattern
+| @paren_pattern
+| @tuple_pattern
+| @typed_pattern
+;
+
+#keyset[id]
+pattern_types( //dir=pattern
+ int id: @pattern ref,
+ int type_: @type_or_none ref
+);
+
+any_patterns( //dir=pattern
+ unique int id: @any_pattern
+);
+
+binding_patterns( //dir=pattern
+ unique int id: @binding_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+bool_patterns( //dir=pattern
+ unique int id: @bool_pattern,
+ boolean value: boolean ref
+);
+
+enum_element_patterns( //dir=pattern
+ unique int id: @enum_element_pattern,
+ int element: @enum_element_decl_or_none ref
+);
+
+#keyset[id]
+enum_element_pattern_sub_patterns( //dir=pattern
+ int id: @enum_element_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+expr_patterns( //dir=pattern
+ unique int id: @expr_pattern,
+ int sub_expr: @expr_or_none ref
+);
+
+is_patterns( //dir=pattern
+ unique int id: @is_pattern
+);
+
+#keyset[id]
+is_pattern_cast_type_reprs( //dir=pattern
+ int id: @is_pattern ref,
+ int cast_type_repr: @type_repr_or_none ref
+);
+
+#keyset[id]
+is_pattern_sub_patterns( //dir=pattern
+ int id: @is_pattern ref,
+ int sub_pattern: @pattern_or_none ref
+);
+
+named_patterns( //dir=pattern
+ unique int id: @named_pattern,
+ int var_decl: @var_decl_or_none ref
+);
+
+optional_some_patterns( //dir=pattern
+ unique int id: @optional_some_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+paren_patterns( //dir=pattern
+ unique int id: @paren_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+tuple_patterns( //dir=pattern
+ unique int id: @tuple_pattern
+);
+
+#keyset[id, index]
+tuple_pattern_elements( //dir=pattern
+ int id: @tuple_pattern ref,
+ int index: int ref,
+ int element: @pattern_or_none ref
+);
+
+typed_patterns( //dir=pattern
+ unique int id: @typed_pattern,
+ int sub_pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+typed_pattern_type_reprs( //dir=pattern
+ int id: @typed_pattern ref,
+ int type_repr: @type_repr_or_none ref
+);
+
+case_label_items( //dir=stmt
+ unique int id: @case_label_item,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+case_label_item_guards( //dir=stmt
+ int id: @case_label_item ref,
+ int guard: @expr_or_none ref
+);
+
+condition_elements( //dir=stmt
+ unique int id: @condition_element
+);
+
+#keyset[id]
+condition_element_booleans( //dir=stmt
+ int id: @condition_element ref,
+ int boolean_: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_patterns( //dir=stmt
+ int id: @condition_element ref,
+ int pattern: @pattern_or_none ref
+);
+
+#keyset[id]
+condition_element_initializers( //dir=stmt
+ int id: @condition_element ref,
+ int initializer: @expr_or_none ref
+);
+
+#keyset[id]
+condition_element_availabilities( //dir=stmt
+ int id: @condition_element ref,
+ int availability: @availability_info_or_none ref
+);
+
+@stmt =
+ @brace_stmt
+| @break_stmt
+| @case_stmt
+| @continue_stmt
+| @defer_stmt
+| @discard_stmt
+| @fail_stmt
+| @fallthrough_stmt
+| @labeled_stmt
+| @pound_assert_stmt
+| @return_stmt
+| @then_stmt
+| @throw_stmt
+| @yield_stmt
+;
+
+stmt_conditions( //dir=stmt
+ unique int id: @stmt_condition
+);
+
+#keyset[id, index]
+stmt_condition_elements( //dir=stmt
+ int id: @stmt_condition ref,
+ int index: int ref,
+ int element: @condition_element_or_none ref
+);
+
+brace_stmts( //dir=stmt
+ unique int id: @brace_stmt
+);
+
+#keyset[id, index]
+brace_stmt_elements( //dir=stmt
+ int id: @brace_stmt ref,
+ int index: int ref,
+ int element: @ast_node_or_none ref
+);
+
+break_stmts( //dir=stmt
+ unique int id: @break_stmt
+);
+
+#keyset[id]
+break_stmt_target_names( //dir=stmt
+ int id: @break_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+break_stmt_targets( //dir=stmt
+ int id: @break_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+case_stmts( //dir=stmt
+ unique int id: @case_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_labels( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int label: @case_label_item_or_none ref
+);
+
+#keyset[id, index]
+case_stmt_variables( //dir=stmt
+ int id: @case_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+continue_stmts( //dir=stmt
+ unique int id: @continue_stmt
+);
+
+#keyset[id]
+continue_stmt_target_names( //dir=stmt
+ int id: @continue_stmt ref,
+ string target_name: string ref
+);
+
+#keyset[id]
+continue_stmt_targets( //dir=stmt
+ int id: @continue_stmt ref,
+ int target: @stmt_or_none ref
+);
+
+defer_stmts( //dir=stmt
+ unique int id: @defer_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+discard_stmts( //dir=stmt
+ unique int id: @discard_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+fail_stmts( //dir=stmt
+ unique int id: @fail_stmt
+);
+
+fallthrough_stmts( //dir=stmt
+ unique int id: @fallthrough_stmt,
+ int fallthrough_source: @case_stmt_or_none ref,
+ int fallthrough_dest: @case_stmt_or_none ref
+);
+
+@labeled_stmt =
+ @do_catch_stmt
+| @do_stmt
+| @for_each_stmt
+| @labeled_conditional_stmt
+| @repeat_while_stmt
+| @switch_stmt
+;
+
+#keyset[id]
+labeled_stmt_labels( //dir=stmt
+ int id: @labeled_stmt ref,
+ string label: string ref
+);
+
+pound_assert_stmts( //dir=stmt
+ unique int id: @pound_assert_stmt,
+ int condition: @expr_or_none ref,
+ string message: string ref
+);
+
+return_stmts( //dir=stmt
+ unique int id: @return_stmt
+);
+
+#keyset[id]
+return_stmt_results( //dir=stmt
+ int id: @return_stmt ref,
+ int result: @expr_or_none ref
+);
+
+then_stmts( //dir=stmt
+ unique int id: @then_stmt,
+ int result: @expr_or_none ref
+);
+
+throw_stmts( //dir=stmt
+ unique int id: @throw_stmt,
+ int sub_expr: @expr_or_none ref
+);
+
+yield_stmts( //dir=stmt
+ unique int id: @yield_stmt
+);
+
+#keyset[id, index]
+yield_stmt_results( //dir=stmt
+ int id: @yield_stmt ref,
+ int index: int ref,
+ int result: @expr_or_none ref
+);
+
+do_catch_stmts( //dir=stmt
+ unique int id: @do_catch_stmt,
+ int body: @stmt_or_none ref
+);
+
+#keyset[id, index]
+do_catch_stmt_catches( //dir=stmt
+ int id: @do_catch_stmt ref,
+ int index: int ref,
+ int catch: @case_stmt_or_none ref
+);
+
+do_stmts( //dir=stmt
+ unique int id: @do_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+for_each_stmts( //dir=stmt
+ unique int id: @for_each_stmt,
+ int pattern: @pattern_or_none ref,
+ int body: @brace_stmt_or_none ref
+);
+
+#keyset[id, index]
+for_each_stmt_variables( //dir=stmt
+ int id: @for_each_stmt ref,
+ int index: int ref,
+ int variable: @var_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_wheres( //dir=stmt
+ int id: @for_each_stmt ref,
+ int where: @expr_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_iterator_vars( //dir=stmt
+ int id: @for_each_stmt ref,
+ int iteratorVar: @pattern_binding_decl_or_none ref
+);
+
+#keyset[id]
+for_each_stmt_next_calls( //dir=stmt
+ int id: @for_each_stmt ref,
+ int nextCall: @expr_or_none ref
+);
+
+@labeled_conditional_stmt =
+ @guard_stmt
+| @if_stmt
+| @while_stmt
+;
+
+#keyset[id]
+labeled_conditional_stmts( //dir=stmt
+ int id: @labeled_conditional_stmt ref,
+ int condition: @stmt_condition_or_none ref
+);
+
+repeat_while_stmts( //dir=stmt
+ unique int id: @repeat_while_stmt,
+ int condition: @expr_or_none ref,
+ int body: @stmt_or_none ref
+);
+
+switch_stmts( //dir=stmt
+ unique int id: @switch_stmt,
+ int expr: @expr_or_none ref
+);
+
+#keyset[id, index]
+switch_stmt_cases( //dir=stmt
+ int id: @switch_stmt ref,
+ int index: int ref,
+ int case_: @case_stmt_or_none ref
+);
+
+guard_stmts( //dir=stmt
+ unique int id: @guard_stmt,
+ int body: @brace_stmt_or_none ref
+);
+
+if_stmts( //dir=stmt
+ unique int id: @if_stmt,
+ int then: @stmt_or_none ref
+);
+
+#keyset[id]
+if_stmt_elses( //dir=stmt
+ int id: @if_stmt ref,
+ int else: @stmt_or_none ref
+);
+
+while_stmts( //dir=stmt
+ unique int id: @while_stmt,
+ int body: @stmt_or_none ref
+);
+
+@type =
+ @any_function_type
+| @any_generic_type
+| @any_metatype_type
+| @builtin_type
+| @dependent_member_type
+| @dynamic_self_type
+| @error_type
+| @existential_type
+| @in_out_type
+| @l_value_type
+| @module_type
+| @pack_element_type
+| @pack_expansion_type
+| @pack_type
+| @parameterized_protocol_type
+| @protocol_composition_type
+| @reference_storage_type
+| @substitutable_type
+| @sugar_type
+| @tuple_type
+| @unresolved_type
+;
+
+#keyset[id]
+types( //dir=type
+ int id: @type ref,
+ string name: string ref,
+ int canonical_type: @type_or_none ref
+);
+
+type_reprs( //dir=type
+ unique int id: @type_repr,
+ int type_: @type_or_none ref
+);
+
+@any_function_type =
+ @function_type
+| @generic_function_type
+;
+
+#keyset[id]
+any_function_types( //dir=type
+ int id: @any_function_type ref,
+ int result: @type_or_none ref
+);
+
+#keyset[id, index]
+any_function_type_param_types( //dir=type
+ int id: @any_function_type ref,
+ int index: int ref,
+ int param_type: @type_or_none ref
+);
+
+#keyset[id]
+any_function_type_is_throwing( //dir=type
+ int id: @any_function_type ref
+);
+
+#keyset[id]
+any_function_type_is_async( //dir=type
+ int id: @any_function_type ref
+);
+
+@any_generic_type =
+ @nominal_or_bound_generic_nominal_type
+| @unbound_generic_type
+;
+
+#keyset[id]
+any_generic_types( //dir=type
+ int id: @any_generic_type ref,
+ int declaration: @generic_type_decl_or_none ref
+);
+
+#keyset[id]
+any_generic_type_parents( //dir=type
+ int id: @any_generic_type ref,
+ int parent: @type_or_none ref
+);
+
+@any_metatype_type =
+ @existential_metatype_type
+| @metatype_type
+;
+
+@builtin_type =
+ @any_builtin_integer_type
+| @builtin_bridge_object_type
+| @builtin_default_actor_storage_type
+| @builtin_executor_type
+| @builtin_float_type
+| @builtin_job_type
+| @builtin_native_object_type
+| @builtin_raw_pointer_type
+| @builtin_raw_unsafe_continuation_type
+| @builtin_unsafe_value_buffer_type
+| @builtin_vector_type
+;
+
+dependent_member_types( //dir=type
+ unique int id: @dependent_member_type,
+ int base_type: @type_or_none ref,
+ int associated_type_decl: @associated_type_decl_or_none ref
+);
+
+dynamic_self_types( //dir=type
+ unique int id: @dynamic_self_type,
+ int static_self_type: @type_or_none ref
+);
+
+error_types( //dir=type
+ unique int id: @error_type
+);
+
+existential_types( //dir=type
+ unique int id: @existential_type,
+ int constraint: @type_or_none ref
+);
+
+in_out_types( //dir=type
+ unique int id: @in_out_type,
+ int object_type: @type_or_none ref
+);
+
+l_value_types( //dir=type
+ unique int id: @l_value_type,
+ int object_type: @type_or_none ref
+);
+
+module_types( //dir=type
+ unique int id: @module_type,
+ int module: @module_decl_or_none ref
+);
+
+pack_element_types( //dir=type
+ unique int id: @pack_element_type,
+ int pack_type: @type_or_none ref
+);
+
+pack_expansion_types( //dir=type
+ unique int id: @pack_expansion_type,
+ int pattern_type: @type_or_none ref,
+ int count_type: @type_or_none ref
+);
+
+pack_types( //dir=type
+ unique int id: @pack_type
+);
+
+#keyset[id, index]
+pack_type_elements( //dir=type
+ int id: @pack_type ref,
+ int index: int ref,
+ int element: @type_or_none ref
+);
+
+parameterized_protocol_types( //dir=type
+ unique int id: @parameterized_protocol_type,
+ int base: @protocol_type_or_none ref
+);
+
+#keyset[id, index]
+parameterized_protocol_type_args( //dir=type
+ int id: @parameterized_protocol_type ref,
+ int index: int ref,
+ int arg: @type_or_none ref
+);
+
+protocol_composition_types( //dir=type
+ unique int id: @protocol_composition_type
+);
+
+#keyset[id, index]
+protocol_composition_type_members( //dir=type
+ int id: @protocol_composition_type ref,
+ int index: int ref,
+ int member: @type_or_none ref
+);
+
+@reference_storage_type =
+ @unmanaged_storage_type
+| @unowned_storage_type
+| @weak_storage_type
+;
+
+#keyset[id]
+reference_storage_types( //dir=type
+ int id: @reference_storage_type ref,
+ int referent_type: @type_or_none ref
+);
+
+@substitutable_type =
+ @archetype_type
+| @generic_type_param_type
+;
+
+@sugar_type =
+ @paren_type
+| @syntax_sugar_type
+| @type_alias_type
+;
+
+tuple_types( //dir=type
+ unique int id: @tuple_type
+);
+
+#keyset[id, index]
+tuple_type_types( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ int type_: @type_or_none ref
+);
+
+#keyset[id, index]
+tuple_type_names( //dir=type
+ int id: @tuple_type ref,
+ int index: int ref,
+ string name: string ref
+);
+
+unresolved_types( //dir=type
+ unique int id: @unresolved_type
+);
+
+@any_builtin_integer_type =
+ @builtin_integer_literal_type
+| @builtin_integer_type
+;
+
+@archetype_type =
+ @local_archetype_type
+| @opaque_type_archetype_type
+| @pack_archetype_type
+| @primary_archetype_type
+;
+
+#keyset[id]
+archetype_types( //dir=type
+ int id: @archetype_type ref,
+ int interface_type: @type_or_none ref
+);
+
+#keyset[id]
+archetype_type_superclasses( //dir=type
+ int id: @archetype_type ref,
+ int superclass: @type_or_none ref
+);
+
+#keyset[id, index]
+archetype_type_protocols( //dir=type
+ int id: @archetype_type ref,
+ int index: int ref,
+ int protocol: @protocol_decl_or_none ref
+);
+
+builtin_bridge_object_types( //dir=type
+ unique int id: @builtin_bridge_object_type
+);
+
+builtin_default_actor_storage_types( //dir=type
+ unique int id: @builtin_default_actor_storage_type
+);
+
+builtin_executor_types( //dir=type
+ unique int id: @builtin_executor_type
+);
+
+builtin_float_types( //dir=type
+ unique int id: @builtin_float_type
+);
+
+builtin_job_types( //dir=type
+ unique int id: @builtin_job_type
+);
+
+builtin_native_object_types( //dir=type
+ unique int id: @builtin_native_object_type
+);
+
+builtin_raw_pointer_types( //dir=type
+ unique int id: @builtin_raw_pointer_type
+);
+
+builtin_raw_unsafe_continuation_types( //dir=type
+ unique int id: @builtin_raw_unsafe_continuation_type
+);
+
+builtin_unsafe_value_buffer_types( //dir=type
+ unique int id: @builtin_unsafe_value_buffer_type
+);
+
+builtin_vector_types( //dir=type
+ unique int id: @builtin_vector_type
+);
+
+existential_metatype_types( //dir=type
+ unique int id: @existential_metatype_type
+);
+
+function_types( //dir=type
+ unique int id: @function_type
+);
+
+generic_function_types( //dir=type
+ unique int id: @generic_function_type
+);
+
+#keyset[id, index]
+generic_function_type_generic_params( //dir=type
+ int id: @generic_function_type ref,
+ int index: int ref,
+ int generic_param: @generic_type_param_type_or_none ref
+);
+
+generic_type_param_types( //dir=type
+ unique int id: @generic_type_param_type
+);
+
+metatype_types( //dir=type
+ unique int id: @metatype_type
+);
+
+@nominal_or_bound_generic_nominal_type =
+ @bound_generic_type
+| @nominal_type
+;
+
+paren_types( //dir=type
+ unique int id: @paren_type,
+ int type_: @type_or_none ref
+);
+
+@syntax_sugar_type =
+ @dictionary_type
+| @unary_syntax_sugar_type
+;
+
+type_alias_types( //dir=type
+ unique int id: @type_alias_type,
+ int decl: @type_alias_decl_or_none ref
+);
+
+unbound_generic_types( //dir=type
+ unique int id: @unbound_generic_type
+);
+
+unmanaged_storage_types( //dir=type
+ unique int id: @unmanaged_storage_type
+);
+
+unowned_storage_types( //dir=type
+ unique int id: @unowned_storage_type
+);
+
+weak_storage_types( //dir=type
+ unique int id: @weak_storage_type
+);
+
+@bound_generic_type =
+ @bound_generic_class_type
+| @bound_generic_enum_type
+| @bound_generic_struct_type
+;
+
+#keyset[id, index]
+bound_generic_type_arg_types( //dir=type
+ int id: @bound_generic_type ref,
+ int index: int ref,
+ int arg_type: @type_or_none ref
+);
+
+builtin_integer_literal_types( //dir=type
+ unique int id: @builtin_integer_literal_type
+);
+
+builtin_integer_types( //dir=type
+ unique int id: @builtin_integer_type
+);
+
+#keyset[id]
+builtin_integer_type_widths( //dir=type
+ int id: @builtin_integer_type ref,
+ int width: int ref
+);
+
+dictionary_types( //dir=type
+ unique int id: @dictionary_type,
+ int key_type: @type_or_none ref,
+ int value_type: @type_or_none ref
+);
+
+@local_archetype_type =
+ @element_archetype_type
+| @opened_archetype_type
+;
+
+@nominal_type =
+ @class_type
+| @enum_type
+| @protocol_type
+| @struct_type
+;
+
+opaque_type_archetype_types( //dir=type
+ unique int id: @opaque_type_archetype_type,
+ int declaration: @opaque_type_decl_or_none ref
+);
+
+pack_archetype_types( //dir=type
+ unique int id: @pack_archetype_type
+);
+
+primary_archetype_types( //dir=type
+ unique int id: @primary_archetype_type
+);
+
+@unary_syntax_sugar_type =
+ @array_slice_type
+| @optional_type
+| @variadic_sequence_type
+;
+
+#keyset[id]
+unary_syntax_sugar_types( //dir=type
+ int id: @unary_syntax_sugar_type ref,
+ int base_type: @type_or_none ref
+);
+
+array_slice_types( //dir=type
+ unique int id: @array_slice_type
+);
+
+bound_generic_class_types( //dir=type
+ unique int id: @bound_generic_class_type
+);
+
+bound_generic_enum_types( //dir=type
+ unique int id: @bound_generic_enum_type
+);
+
+bound_generic_struct_types( //dir=type
+ unique int id: @bound_generic_struct_type
+);
+
+class_types( //dir=type
+ unique int id: @class_type
+);
+
+element_archetype_types( //dir=type
+ unique int id: @element_archetype_type
+);
+
+enum_types( //dir=type
+ unique int id: @enum_type
+);
+
+opened_archetype_types( //dir=type
+ unique int id: @opened_archetype_type
+);
+
+optional_types( //dir=type
+ unique int id: @optional_type
+);
+
+protocol_types( //dir=type
+ unique int id: @protocol_type
+);
+
+struct_types( //dir=type
+ unique int id: @struct_type
+);
+
+variadic_sequence_types( //dir=type
+ unique int id: @variadic_sequence_type
+);
+
+@accessor_or_none =
+ @accessor
+| @unspecified_element
+;
+
+@argument_or_none =
+ @argument
+| @unspecified_element
+;
+
+@associated_type_decl_or_none =
+ @associated_type_decl
+| @unspecified_element
+;
+
+@ast_node_or_none =
+ @ast_node
+| @unspecified_element
+;
+
+@availability_info_or_none =
+ @availability_info
+| @unspecified_element
+;
+
+@availability_spec_or_none =
+ @availability_spec
+| @unspecified_element
+;
+
+@brace_stmt_or_none =
+ @brace_stmt
+| @unspecified_element
+;
+
+@captured_decl_or_none =
+ @captured_decl
+| @unspecified_element
+;
+
+@case_label_item_or_none =
+ @case_label_item
+| @unspecified_element
+;
+
+@case_stmt_or_none =
+ @case_stmt
+| @unspecified_element
+;
+
+@closure_expr_or_none =
+ @closure_expr
+| @unspecified_element
+;
+
+@condition_element_or_none =
+ @condition_element
+| @unspecified_element
+;
+
+@decl_or_none =
+ @decl
+| @unspecified_element
+;
+
+@enum_element_decl_or_none =
+ @enum_element_decl
+| @unspecified_element
+;
+
+@expr_or_none =
+ @expr
+| @unspecified_element
+;
+
+@file_or_none =
+ @file
+| @unspecified_element
+;
+
+@function_or_none =
+ @function
+| @unspecified_element
+;
+
+@generic_type_decl_or_none =
+ @generic_type_decl
+| @unspecified_element
+;
+
+@generic_type_param_decl_or_none =
+ @generic_type_param_decl
+| @unspecified_element
+;
+
+@generic_type_param_type_or_none =
+ @generic_type_param_type
+| @unspecified_element
+;
+
+@initializer_or_none =
+ @initializer
+| @unspecified_element
+;
+
+@key_path_component_or_none =
+ @key_path_component
+| @unspecified_element
+;
+
+@location_or_none =
+ @location
+| @unspecified_element
+;
+
+@macro_role_or_none =
+ @macro_role
+| @unspecified_element
+;
+
+@module_decl_or_none =
+ @module_decl
+| @unspecified_element
+;
+
+@nominal_type_decl_or_none =
+ @nominal_type_decl
+| @unspecified_element
+;
+
+@opaque_type_decl_or_none =
+ @opaque_type_decl
+| @unspecified_element
+;
+
+@opaque_value_expr_or_none =
+ @opaque_value_expr
+| @unspecified_element
+;
+
+@param_decl_or_none =
+ @param_decl
+| @unspecified_element
+;
+
+@pattern_or_none =
+ @pattern
+| @unspecified_element
+;
+
+@pattern_binding_decl_or_none =
+ @pattern_binding_decl
+| @unspecified_element
+;
+
+@precedence_group_decl_or_none =
+ @precedence_group_decl
+| @unspecified_element
+;
+
+@protocol_decl_or_none =
+ @protocol_decl
+| @unspecified_element
+;
+
+@protocol_type_or_none =
+ @protocol_type
+| @unspecified_element
+;
+
+@stmt_or_none =
+ @stmt
+| @unspecified_element
+;
+
+@stmt_condition_or_none =
+ @stmt_condition
+| @unspecified_element
+;
+
+@string_literal_expr_or_none =
+ @string_literal_expr
+| @unspecified_element
+;
+
+@tap_expr_or_none =
+ @tap_expr
+| @unspecified_element
+;
+
+@type_or_none =
+ @type
+| @unspecified_element
+;
+
+@type_alias_decl_or_none =
+ @type_alias_decl
+| @unspecified_element
+;
+
+@type_expr_or_none =
+ @type_expr
+| @unspecified_element
+;
+
+@type_repr_or_none =
+ @type_repr
+| @unspecified_element
+;
+
+@value_decl_or_none =
+ @unspecified_element
+| @value_decl
+;
+
+@var_decl_or_none =
+ @unspecified_element
+| @var_decl
+;
diff --git a/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/upgrade.properties b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/upgrade.properties
new file mode 100644
index 00000000000..f09284fb3d4
--- /dev/null
+++ b/swift/ql/lib/upgrades/33db81ad4b606ff9a476c8dabeb9fffbf61aa829/upgrade.properties
@@ -0,0 +1,2 @@
+description: Add `ExtracFunctionIsolationExpr`, `CurrentContextIsolationExpr`, `ActorIsolationErasureExpr` and `UnreachableExpr`.
+compatibility: full
diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected
new file mode 100644
index 00000000000..aabc59fac99
--- /dev/null
+++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected
@@ -0,0 +1 @@
+| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | hasType: | yes | getFunctionExpr: | extract_function_isolation.swift:2:21:2:21 | x |
diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql
new file mode 100644
index 00000000000..f133b61f9b6
--- /dev/null
+++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql
@@ -0,0 +1,11 @@
+// generated by codegen/codegen.py, do not edit
+import codeql.swift.elements
+import TestUtils
+
+from ExtractFunctionIsolationExpr x, string hasType, Expr getFunctionExpr
+where
+ toBeTested(x) and
+ not x.isUnknown() and
+ (if x.hasType() then hasType = "yes" else hasType = "no") and
+ getFunctionExpr = x.getFunctionExpr()
+select x, "hasType:", hasType, "getFunctionExpr:", getFunctionExpr
diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected
new file mode 100644
index 00000000000..2c6a32f914c
--- /dev/null
+++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected
@@ -0,0 +1 @@
+| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | (any Actor)? |
diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql
new file mode 100644
index 00000000000..b7e9c6a7ba0
--- /dev/null
+++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql
@@ -0,0 +1,7 @@
+// generated by codegen/codegen.py, do not edit
+import codeql.swift.elements
+import TestUtils
+
+from ExtractFunctionIsolationExpr x
+where toBeTested(x) and not x.isUnknown()
+select x, x.getType()
diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/extract_function_isolation.swift b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/extract_function_isolation.swift
new file mode 100644
index 00000000000..fb5dcb52c08
--- /dev/null
+++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/extract_function_isolation.swift
@@ -0,0 +1,3 @@
+func foo(x: @isolated(any) () -> ()) {
+ let isolation = x.isolation
+}
diff --git a/swift/schema.py b/swift/schema.py
index 7c2cebb594d..d99a00c2e67 100644
--- a/swift/schema.py
+++ b/swift/schema.py
@@ -1425,3 +1425,41 @@ class DiscardStmt(Stmt):
```
"""
sub_expr: Expr | child
+
+
+class ExtractFunctionIsolationExpr(Expr):
+ """
+ An expression that extracts the function isolation of an expression with `@isolated(any)`
+ function type.
+
+ For example:
+ ```
+ func foo(x: @isolated(any) () -> ()) {
+ let isolation = x.isolation
+ }
+ ```
+ """
+ function_expr: Expr | child
+
+
+@qltest.skip
+class CurrentContextIsolationExpr(Expr):
+ """
+ An expression that extracts the actor isolation of the current context, of type `(any Actor)?`.
+ This is synthesized by the type checker and does not have any way to be expressed explicitly in
+ the source.
+ """
+ actor: Expr
+
+
+class ActorIsolationErasureExpr(ImplicitConversionExpr):
+ """
+ A conversion that erases the actor isolation of an expression with `@isolated(any)` function
+ type.
+ """
+
+
+class UnreachableExpr(ImplicitConversionExpr):
+ """
+ A conversion from the uninhabited type to any other type. It's never evaluated.
+ """