diff --git a/Cargo.lock b/Cargo.lock index 65a77b316c9..6ddab4533c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,6 +155,15 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +[[package]] +name = "borsh" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +dependencies = [ + "cfg_aliases", +] + [[package]] name = "bstr" version = "1.10.0" @@ -230,6 +239,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chalk-derive" version = "0.98.0" @@ -261,7 +276,7 @@ dependencies = [ "chalk-derive", "chalk-ir", "chalk-solve", - "rustc-hash", + "rustc-hash 1.1.0", "tracing", ] @@ -277,7 +292,7 @@ dependencies = [ "indexmap 2.6.0", "itertools 0.12.1", "petgraph", - "rustc-hash", + "rustc-hash 1.1.0", "tracing", ] @@ -1286,9 +1301,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_abi" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011c39d409940a890414e3a7b239762ac16d88029ad71b050a8374831b93790" +checksum = "613760a3071b25a67a8d7bc97b37c7fd4722562e9479137b83ae9cf8f8c1601a" dependencies = [ "bitflags 2.6.0", "ra-ap-rustc_index", @@ -1297,9 +1312,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_index" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9027acdee649b0b27eb10b7db5be833efee3362d394935c5eed8f0745a9d43ce" +checksum = "5b2bc6b4ecede8ff28295041e22c2e66853f8e0125990c05135bad3c30bad12c" dependencies = [ "arrayvec", "ra-ap-rustc_index_macros", @@ -1308,9 +1323,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_index_macros" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540b86dc0384141ac8e825fc2874cd44bffd4277d99d8ec63ee416f1a98d5997" +checksum = "2374a39fb2d92d0509178c2b442eadca3cc10e403ef9729a040c1855b08ff261" dependencies = [ "proc-macro2", "quote", @@ -1319,9 +1334,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_lexer" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdf98bb457b47b9ae4aeebf867d0ca440c86925e0b6381658c4a02589748c9d" +checksum = "5a2cf8e48b69af3ecc29ed3449892e8a999111d2f75212a78aa242e117cf1711" dependencies = [ "unicode-properties", "unicode-xid", @@ -1329,9 +1344,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_parse_format" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fe3556ab6311bb775220563a300e2bf62ec56404521fe0c511a583937683d5" +checksum = "8d6f59a22b559263c5c42747ae362cf5d4fb272293fa119a4623f8ec288f9656" dependencies = [ "ra-ap-rustc_index", "ra-ap-rustc_lexer", @@ -1339,12 +1354,12 @@ dependencies = [ [[package]] name = "ra-ap-rustc_pattern_analysis" -version = "0.63.0" +version = "0.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1709080fdeb5db630e1c2644026c2962aaa32416cd92f0190c04b0c21e114b91" +checksum = "a7d0575b54ffe09bc5d2f158454bc05f0c30c01d9992310965f854be50ae22b8" dependencies = [ "ra-ap-rustc_index", - "rustc-hash", + "rustc-hash 2.1.0", "rustc_apfloat", "smallvec", "tracing", @@ -1352,9 +1367,9 @@ dependencies = [ [[package]] name = "ra_ap_base_db" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcb25fbab872d3f85798739db011212a98444e55163d71edb1dfdb509e616b3" +checksum = "321b770750ff90b03af539ac6d47ca46208f6f747be97c0a4aaca3a428447c8f" dependencies = [ "la-arena", "lz4_flex", @@ -1365,7 +1380,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash", + "rustc-hash 2.1.0", "semver", "tracing", "triomphe", @@ -1373,20 +1388,21 @@ dependencies = [ [[package]] name = "ra_ap_cfg" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbec14556d01bf34fb795d70941f929ed4c024dee11be9c99c712ea92225a20b" +checksum = "5023f50ebcf3656d85b96565dac56d50cc3e3d959c41592f457d2230d7be706a" dependencies = [ "ra_ap_intern", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", + "tracing", ] [[package]] name = "ra_ap_hir" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c38520eb4770af561c34b908431f4e548c3282093cf3daf3c6e566d99a2937" +checksum = "d07a9a085cf581d5f503aa467d32bbd1e5e7f94a3e86f881ca9c19b379570c62" dependencies = [ "arrayvec", "either", @@ -1401,7 +1417,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "smallvec", "tracing", "triomphe", @@ -1409,9 +1425,9 @@ dependencies = [ [[package]] name = "ra_ap_hir_def" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00b546cacca816b94a12d51df076d50965d6bae411fd68f9024420bfa026e7b" +checksum = "825c47fec7aab22c38ad9eba1d76102a95a6eb089e85b4e58308089d056c3cdc" dependencies = [ "arrayvec", "bitflags 2.6.0", @@ -1436,18 +1452,19 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "rustc_apfloat", "smallvec", + "text-size", "tracing", "triomphe", ] [[package]] name = "ra_ap_hir_expand" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c9675e1331dadf43cbc807ae39d2c289b8ba2af33a8e197c0927d926a6610d" +checksum = "1084b708f90de31888deb6e7f9cda5ebb8e6a59484143a3df0a4007dcf496b17" dependencies = [ "cov-mark", "either", @@ -1465,7 +1482,7 @@ dependencies = [ "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "smallvec", "tracing", "triomphe", @@ -1473,9 +1490,9 @@ dependencies = [ [[package]] name = "ra_ap_hir_ty" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e308aa1b956137c82547a8b46eb60c6ee295628322e00aa5266a1ea5ea8e522e" +checksum = "400a42e442b6d8f64adea48a8c9e39f76a1b9ed9964fd40222bd2d7cfe0a5a79" dependencies = [ "arrayvec", "bitflags 2.6.0", @@ -1502,7 +1519,7 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", - "rustc-hash", + "rustc-hash 2.1.0", "rustc_apfloat", "scoped-tls", "smallvec", @@ -1513,9 +1530,9 @@ dependencies = [ [[package]] name = "ra_ap_ide_db" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ea9c17702025001c1672ab23bf9be3cf40785376c0f368a10fe812db1327eb" +checksum = "d4ced45b107a8f4c1a4cee68b270d08832327b34ad0bf7794879342ac280bc8b" dependencies = [ "arrayvec", "bitflags 2.6.0", @@ -1536,37 +1553,36 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", - "ra_ap_text_edit", "rayon", - "rustc-hash", + "rustc-hash 2.1.0", "tracing", "triomphe", ] [[package]] name = "ra_ap_intern" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78e0928f2c403ebea95f97a38a720900216ea896212347e893a37ae7c1419030" +checksum = "e5432d6cf7382c06dab31b6c1772446c8576dd19fcbc007bc8a6fd8bca3d424d" dependencies = [ "dashmap", "hashbrown 0.14.5", - "rustc-hash", + "rustc-hash 2.1.0", "sptr", "triomphe", ] [[package]] name = "ra_ap_limit" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60972e02e4dfe05b2755e09a6b11b27db8a47cea01cd2697e77a34c4cf60b31c" +checksum = "822501c9f88830865ebedf944130dbe0603fa8d30a5da90f3224c1dcca2660de" [[package]] name = "ra_ap_load-cargo" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6f24b61f1ef1f3a756493d1fb7e711b69b2e4d5f4746fcb959313dfd41471" +checksum = "2d5b002bcda197a4e9442c827dc86305d8fc1820fbbcb9814ff9bbc2c50f4e9c" dependencies = [ "anyhow", "crossbeam-channel", @@ -1586,12 +1602,13 @@ dependencies = [ [[package]] name = "ra_ap_mbe" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a0997373ff65e7748e7768186598c6831e95f71639f66c3f79ef591c9d496" +checksum = "b4fce40b490b6bbca3d033f4cbf32ef07069423aa3edc1e00ec26ddabf503866" dependencies = [ "arrayvec", "cov-mark", + "ra-ap-rustc_lexer", "ra_ap_intern", "ra_ap_parser", "ra_ap_span", @@ -1599,16 +1616,16 @@ dependencies = [ "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "smallvec", "tracing", ] [[package]] name = "ra_ap_parser" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da0314db93eabbd2b92e13907690782688cfc8aaaf42b8e6726e7f5b338c2e3" +checksum = "573c14046174e3ef03a9d73841dbc52fd1d6224fffd1a0713aef95b45e024f75" dependencies = [ "drop_bomb", "ra-ap-rustc_lexer", @@ -1618,9 +1635,9 @@ dependencies = [ [[package]] name = "ra_ap_paths" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc084003225204a9e5e50957a565f1cc23ebef18cd779f31563a8d2180f8940" +checksum = "57aa6e3d7c45806434cdee09aa74b561723552732e8b089213fe821ae84404ec" dependencies = [ "camino", "serde", @@ -1628,9 +1645,9 @@ dependencies = [ [[package]] name = "ra_ap_proc_macro_api" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809670622e93f105abc60ea0cb371cfaff990beae7ce534b127fb39b423b4b92" +checksum = "79d9595e05b422f3258c51f9a529129c9a59f99037deac652ff2cdd0c97e0bda" dependencies = [ "indexmap 2.6.0", "ra_ap_base_db", @@ -1639,7 +1656,7 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "serde", "serde_json", "tracing", @@ -1647,9 +1664,9 @@ dependencies = [ [[package]] name = "ra_ap_profile" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572193d698a8bc4245463688d10f20932ab04940d5b6c32be457bc45dc1e6ab0" +checksum = "459551d7e5a6dda9204c3741215c1f6a97cf6f4553e3c29294f7f8ac0ec91f57" dependencies = [ "cfg-if", "libc", @@ -1659,9 +1676,9 @@ dependencies = [ [[package]] name = "ra_ap_project_model" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db83d1844c74b22c110c4b8e8f2519be2b1723964008527281a11c3398749756" +checksum = "171aacd6d1642f9d821f27fc318a503cfe10c5c6294193c401e991266e38a583" dependencies = [ "anyhow", "cargo_metadata", @@ -1674,7 +1691,7 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_toolchain", - "rustc-hash", + "rustc-hash 2.1.0", "semver", "serde", "serde_json", @@ -1684,9 +1701,9 @@ dependencies = [ [[package]] name = "ra_ap_salsa" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370b302873eeafd07ccc6a714fc9395cae11e385955ccb78081093ee3b86f94e" +checksum = "504314128b0998f54d8e253a328a53e2a697f579f8d1f194b52f77cd8a540e36" dependencies = [ "indexmap 2.6.0", "itertools 0.12.1", @@ -1694,7 +1711,7 @@ dependencies = [ "oorandom", "parking_lot", "ra_ap_salsa-macros", - "rustc-hash", + "rustc-hash 2.1.0", "smallvec", "tracing", "triomphe", @@ -1702,9 +1719,9 @@ dependencies = [ [[package]] name = "ra_ap_salsa-macros" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414ff383af5abdb731917ca46c1a0f6b291278430736fe1ff2430a8548206a62" +checksum = "d957f6ec9a6f11cf9c8ce0f27711f4f9813bdd690b3efa6a280cb06a75b5a0fc" dependencies = [ "heck 0.4.1", "proc-macro2", @@ -1714,9 +1731,9 @@ dependencies = [ [[package]] name = "ra_ap_span" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b982f799c7a8051219902ff5c1974ee353ac6ca2aa5b17ab0e3db9b8d8a7bf" +checksum = "5c82fd3ff10c25958db0c254f8f4378cb75069017b675f4fe4c5e7d5f2827e71" dependencies = [ "hashbrown 0.14.5", "la-arena", @@ -1724,15 +1741,15 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash", + "rustc-hash 2.1.0", "text-size", ] [[package]] name = "ra_ap_stdx" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb63ff9d6b11b4553fc0835f16705975258905e3b1230fcf1ddbf24c46aff69d" +checksum = "0be113ed187f4bf5403ebd8256d3d4aead8d265f670d534c646edea68516ef86" dependencies = [ "always-assert", "crossbeam-channel", @@ -1745,9 +1762,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ac12decfd5cadd880177316fc16afc1f2c67f241f6290b51fd6f222e2bd4d5" +checksum = "d5af8d681a9fd408be1b17f3b150eb98907fb72b9b44000ada9c3e9b6c059188" dependencies = [ "cov-mark", "either", @@ -1756,9 +1773,8 @@ dependencies = [ "ra-ap-rustc_lexer", "ra_ap_parser", "ra_ap_stdx", - "ra_ap_text_edit", "rowan", - "rustc-hash", + "rustc-hash 2.1.0", "smol_str", "tracing", "triomphe", @@ -1766,9 +1782,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax-bridge" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d57ec874cf6d45d25ce5d63dbfdf60912d5a33138855c4ab7e4314cfd01f6fa" +checksum = "8f957885289e9789dffcd81ebfa4c2d49be3fad41f7718ffeacb3599f6d88678" dependencies = [ "ra_ap_intern", "ra_ap_parser", @@ -1776,25 +1792,15 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash", + "rustc-hash 2.1.0", "tracing", ] -[[package]] -name = "ra_ap_text_edit" -version = "0.0.232" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb72ee1901baec556f4f2ef77e287d749ac0e973f063990672d6207b076aeac" -dependencies = [ - "itertools 0.12.1", - "text-size", -] - [[package]] name = "ra_ap_toolchain" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897200f5ab09335a77e9c8344fd8d5fd67f312c402179a378613421b4dec8d8f" +checksum = "e067bd4107ec52a241b68398539632df0a850013907070002d4d403c3691e51c" dependencies = [ "camino", "home", @@ -1802,9 +1808,9 @@ dependencies = [ [[package]] name = "ra_ap_tt" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9730313c495e88a89ee33f6e34205a92652d9c9a5061ebaed59436058a33000" +checksum = "4c38deb50d7a26663c28deb01e5611b3b92b5a87298940e0638589f03c3faf62" dependencies = [ "arrayvec", "ra-ap-rustc_lexer", @@ -1815,9 +1821,9 @@ dependencies = [ [[package]] name = "ra_ap_vfs" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d833eaa5422de9bb51ab1841fe505ed00fb51e64cce397e21de6c324bbcbffa0" +checksum = "168a9378dd3f185ae94dda9c35e4d468a8ff105c8f4bb57e17f6e2312d84d1a8" dependencies = [ "crossbeam-channel", "fst", @@ -1825,15 +1831,15 @@ dependencies = [ "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", - "rustc-hash", + "rustc-hash 2.1.0", "tracing", ] [[package]] name = "ra_ap_vfs-notify" -version = "0.0.232" +version = "0.0.248" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388ea8af458d6f06ed6b67c8e3dcf634a798cb3f4e62df51bd6be00c2b219bca" +checksum = "1a5e13d88bf8bbd8dd02c96dd8d89e6cebc2757a0edf13b3b85007024fcf216c" dependencies = [ "crossbeam-channel", "notify", @@ -1841,7 +1847,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_vfs", "rayon", - "rustc-hash", + "rustc-hash 2.1.0", "tracing", "walkdir", ] @@ -1958,7 +1964,7 @@ dependencies = [ "countme", "hashbrown 0.14.5", "memoffset", - "rustc-hash", + "rustc-hash 1.1.0", "text-size", ] @@ -1976,6 +1982,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + [[package]] name = "rustc_apfloat" version = "0.2.1+llvm-462a31f5a5ab" @@ -2119,10 +2131,11 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smol_str" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" dependencies = [ + "borsh", "serde", ] diff --git a/MODULE.bazel b/MODULE.bazel index ca0bbd37f73..b445ec5819a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -37,7 +37,7 @@ bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True # the versions there are canonical, the versions here are used for CI in github/codeql, as well as for the vendoring of dependencies. RUST_EDITION = "2021" -RUST_VERSION = "1.81.0" +RUST_VERSION = "1.82.0" rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") rust.toolchain( diff --git a/rust/ast-generator/rust.ungram b/rust/ast-generator/rust.ungram index 43375ce6ae0..30428329dd9 100644 --- a/rust/ast-generator/rust.ungram +++ b/rust/ast-generator/rust.ungram @@ -37,7 +37,7 @@ Path = PathSegment = '::'? NameRef | NameRef GenericArgList? -| NameRef ParamList RetType? +| NameRef ParenthesizedArgList RetType? | NameRef ReturnTypeSyntax | '<' Type ('as' PathType)? '>' @@ -49,6 +49,9 @@ ReturnTypeSyntax = // Generics // //*************************// +ParenthesizedArgList = + '::'? '(' (TypeArg (',' TypeArg)* ','?)? ')' + GenericArgList = '::'? '<' (GenericArg (',' GenericArg)* ','?)? '>' @@ -190,7 +193,7 @@ UseTreeList = Fn = Attr* Visibility? - 'default'? 'const'? 'async'? 'gen'? 'unsafe'? Abi? + 'default'? 'const'? 'async'? 'gen'? 'unsafe'? 'safe'? Abi? 'fn' Name GenericParamList? ParamList RetType? WhereClause? (body:BlockExpr | ';') @@ -284,6 +287,7 @@ Const = Static = Attr* Visibility? + 'unsafe'? 'safe'? 'static' 'mut'? Name ':' Type ('=' body:Expr)? ';' @@ -391,8 +395,33 @@ Expr = OffsetOfExpr = Attr* 'builtin' '#' 'offset_of' '(' Type ',' fields:(NameRef ('.' NameRef)* ) ')' +// asm := "asm!(" format_string *("," format_string) *("," operand) [","] ")" +// global_asm := "global_asm!(" format_string *("," format_string) *("," operand) [","] ")" +// format_string := STRING_LITERAL / RAW_STRING_LITERAL AsmExpr = - Attr* 'builtin' '#' 'asm' '(' Expr ')' + Attr* 'builtin' '#' 'asm' '(' template:(Expr (',' Expr)*) (AsmPiece (',' AsmPiece)*)? ','? ')' + +// operand_expr := expr / "_" / expr "=>" expr / expr "=>" "_" +AsmOperandExpr = in_expr:Expr ('=>' out_expr:Expr)? +// dir_spec := "in" / "out" / "lateout" / "inout" / "inlateout" +AsmDirSpec = 'in' | 'out' | 'lateout' | 'inout' | 'inlateout' +// reg_spec := / "\"" "\"" +AsmRegSpec = '@string' | NameRef +// reg_operand := [ident "="] dir_spec "(" reg_spec ")" operand_expr +AsmRegOperand = AsmDirSpec '(' AsmRegSpec ')' AsmOperandExpr +// clobber_abi := "clobber_abi(" *("," ) [","] ")" +AsmClobberAbi = 'clobber_abi' '(' ('@string' (',' '@string')* ','?) ')' +// option := "pure" / "nomem" / "readonly" / "preserves_flags" / "noreturn" / "nostack" / "att_syntax" / "raw" +AsmOption = 'pure' | 'nomem' | 'readonly' | 'preserves_flags' | 'noreturn' | 'nostack' | 'att_syntax' | 'raw' | 'may_unwind' +// options := "options(" option *("," option) [","] ")" +AsmOptions = 'options' '(' AsmOption *(',' AsmOption) ','? ')' +AsmLabel = 'label' BlockExpr +AsmSym = 'sym' Path +AsmConst = 'const' Expr +// operand := reg_operand / clobber_abi / options +AsmOperand = AsmRegOperand | AsmLabel | AsmSym | AsmConst +AsmOperandNamed = (Name '=')? AsmOperand +AsmPiece = AsmOperandNamed | AsmClobberAbi | AsmOptions FormatArgsExpr = Attr* 'builtin' '#' 'format_args' '(' @@ -631,7 +660,14 @@ TypeBoundList = TypeBound = Lifetime | ('~' 'const' | 'const')? 'async'? '?'? Type -| 'use' GenericParamList +| 'use' UseBoundGenericArgs + +UseBoundGenericArgs = + '<' (UseBoundGenericArg (',' UseBoundGenericArg)* ','?)? '>' + +UseBoundGenericArg = + Lifetime +| NameRef //************************// // Patterns // @@ -703,7 +739,7 @@ PathPat = Path OrPat = - (Pat ('|' Pat)* '|'?) + '|'? (Pat ('|' Pat)*) BoxPat = 'box' Pat diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 97d348f4119..163a28b035a 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -10,20 +10,20 @@ clap = { version = "4.5.16", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } log = "0.4.22" num-traits = "0.2.19" -ra_ap_base_db = "0.0.232" -ra_ap_hir = "0.0.232" -ra_ap_hir_def = "0.0.232" -ra_ap_ide_db = "0.0.232" -ra_ap_hir_expand = "0.0.232" -ra_ap_load-cargo = "0.0.232" -ra_ap_paths = "0.0.232" -ra_ap_project_model = "0.0.232" -ra_ap_syntax = "0.0.232" -ra_ap_vfs = "0.0.232" -ra_ap_parser = "0.0.232" -ra_ap_span = "0.0.232" -ra_ap_cfg = "0.0.232" -ra_ap_intern = "0.0.232" +ra_ap_base_db = "0.0.248" +ra_ap_hir = "0.0.248" +ra_ap_hir_def = "0.0.248" +ra_ap_ide_db = "0.0.248" +ra_ap_hir_expand = "0.0.248" +ra_ap_load-cargo = "0.0.248" +ra_ap_paths = "0.0.248" +ra_ap_project_model = "0.0.248" +ra_ap_syntax = "0.0.248" +ra_ap_vfs = "0.0.248" +ra_ap_parser = "0.0.248" +ra_ap_span = "0.0.248" +ra_ap_cfg = "0.0.248" +ra_ap_intern = "0.0.248" serde = "1.0.209" serde_with = "3.9.0" stderrlog = "0.6.0" diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 84f8268d504..ac13676e690 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -6,7 +6,7 @@ use crate::trap::{DiagnosticSeverity, TrapFile, TrapId}; use crate::trap::{Label, TrapClass}; use itertools::Either; use log::Level; -use ra_ap_base_db::salsa::InternKey; +use ra_ap_base_db::ra_salsa::InternKey; use ra_ap_base_db::CrateOrigin; use ra_ap_hir::db::ExpandDatabase; use ra_ap_hir::{ @@ -242,7 +242,7 @@ impl<'a> Translator<'a> { }) { if let Some(err) = &value.err { - let (message, _error) = err.render_to_string(semantics.db); + let error = err.render_to_string(semantics.db); if err.span().anchor.file_id == semantics.hir_file_for(mcall.syntax()) { let location = err.span().range @@ -252,7 +252,7 @@ impl<'a> Translator<'a> { .get_erased(err.span().anchor.ast_id) .text_range() .start(); - self.emit_parse_error(mcall, &SyntaxError::new(message, location)); + self.emit_parse_error(mcall, &SyntaxError::new(error.message, location)); }; } for err in value.value.iter() {