diff --git a/Cargo.lock b/Cargo.lock index 4330aae0b8a..eb206607583 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -790,7 +790,7 @@ dependencies = [ "databake-derive", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -800,7 +800,7 @@ dependencies = [ "databake", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "synstructure", ] @@ -849,26 +849,23 @@ dependencies = [ [[package]] name = "diplomat" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "131a7c8474cb3648784b28b131021017bf0e8a0acb2e7fe4432ac5a72b81d734" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "diplomat_core", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] name = "diplomat-runtime" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be78da2d794f65e463740e6f1a6b1e7a3973d62f40fd02d05cc71adbee7ea5a" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" [[package]] name = "diplomat_core" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c69d55d3abfc5b4f487e4410df7971626d999d84b25de6ad0ffd5c278f58a1" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "lazy_static", "proc-macro2", @@ -876,7 +873,7 @@ dependencies = [ "serde", "smallvec", "strck_ident", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -887,13 +884,13 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -1766,7 +1763,7 @@ dependencies = [ "serde-aux", "serde_json", "simple_logger", - "syn 1.0.109", + "syn 2.0.15", "tinystr", "toml", "writeable", @@ -2081,7 +2078,7 @@ dependencies = [ "icu_provider", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -3293,9 +3290,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.156" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] @@ -3333,13 +3330,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.156" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -3595,23 +3592,23 @@ dependencies = [ [[package]] name = "syn-inline-mod" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0356188b235b38dc1357a13fa13b79319d80598028d549af5750e4b03a0fc47" +checksum = "2fa6dca1fdb7b2ed46dd534a326725419d4fb10f23d8c85a8b2860e5eb25d0f9" dependencies = [ "proc-macro2", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] name = "synstructure" -version = "0.12.6" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "unicode-xid", ] @@ -4720,7 +4717,7 @@ version = "0.7.1" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "synstructure", "yoke", "zerovec", @@ -4739,7 +4736,7 @@ version = "0.1.2" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "synstructure", "zerofrom", "zerovec", @@ -4776,7 +4773,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 1.0.109", + "syn 2.0.15", "synstructure", "zerofrom", "zerovec", diff --git a/ffi/diplomat/Cargo.toml b/ffi/diplomat/Cargo.toml index 04e6216e9c6..187f19ee0aa 100644 --- a/ffi/diplomat/Cargo.toml +++ b/ffi/diplomat/Cargo.toml @@ -127,8 +127,8 @@ icu_testdata = { version = "1.2.0", path = "../../provider/testdata", optional = # The version here can either be a `version = ".."` spec or `git = "https://github.com/rust-diplomat/diplomat", rev = ".."` # Since this crate is published, Diplomat must be published preceding a new ICU4X release but may use git versions in between # ALSO MAKE SURE TO UPDATE /tools/ffi_coverage/Cargo.toml! -diplomat = { version = "0.5.2" } -diplomat-runtime = { version = "0.5.2" } +diplomat = { git = "https://github.com/rust-diplomat/diplomat", rev = "8d125999893fedfdf30595e97334c21ec4b18da9" } +diplomat-runtime = { git = "https://github.com/rust-diplomat/diplomat", rev = "8d125999893fedfdf30595e97334c21ec4b18da9" } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/ffi/diplomat/c/examples/fixeddecimal_tiny/icu_capi_staticlib_tiny/Cargo.lock b/ffi/diplomat/c/examples/fixeddecimal_tiny/icu_capi_staticlib_tiny/Cargo.lock index fc9d398338a..45192160b69 100644 --- a/ffi/diplomat/c/examples/fixeddecimal_tiny/icu_capi_staticlib_tiny/Cargo.lock +++ b/ffi/diplomat/c/examples/fixeddecimal_tiny/icu_capi_staticlib_tiny/Cargo.lock @@ -23,9 +23,8 @@ dependencies = [ [[package]] name = "diplomat" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e9eae368e4141b5f1c594afe819c85bad0aec8fd1f4cc9ac1888837a957491" +version = "0.5.2" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "diplomat_core", "proc-macro2", @@ -35,15 +34,13 @@ dependencies = [ [[package]] name = "diplomat-runtime" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e401cc0e98682b1a24220a4f3185bb5ddd8ccb2cd861d09fe23455b401e3cce" +version = "0.5.2" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" [[package]] name = "diplomat_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba145991e24046639916a3199216e29493659398fc2f25673f48aee29b122b2" +version = "0.5.2" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "lazy_static", "proc-macro2", @@ -56,9 +53,9 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", @@ -105,7 +102,7 @@ dependencies = [ [[package]] name = "icu_capi" -version = "1.2.1" +version = "1.2.2" dependencies = [ "diplomat", "diplomat-runtime", @@ -442,18 +439,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -475,18 +472,18 @@ checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", @@ -526,9 +523,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", @@ -537,9 +534,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.6" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06" dependencies = [ "proc-macro2", "quote", diff --git a/ffi/gn/.cargo/config b/ffi/gn/.cargo/config index cb7f6c5642b..e738f575f9d 100644 --- a/ffi/gn/.cargo/config +++ b/ffi/gn/.cargo/config @@ -6,5 +6,10 @@ [source.crates-io] replace-with = "vendored-sources" +[source."git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9"] +git = "https://github.com/rust-diplomat/diplomat" +rev = "8d125999893fedfdf30595e97334c21ec4b18da9" +replace-with = "vendored-sources" + [source.vendored-sources] directory = "vendor" diff --git a/ffi/gn/Cargo.lock b/ffi/gn/Cargo.lock index b51030747a3..b8de8008887 100644 --- a/ffi/gn/Cargo.lock +++ b/ffi/gn/Cargo.lock @@ -36,7 +36,7 @@ dependencies = [ "argh_shared", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -103,26 +103,23 @@ checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] name = "diplomat" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "131a7c8474cb3648784b28b131021017bf0e8a0acb2e7fe4432ac5a72b81d734" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "diplomat_core", "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "diplomat-runtime" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be78da2d794f65e463740e6f1a6b1e7a3973d62f40fd02d05cc71adbee7ea5a" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" [[package]] name = "diplomat_core" version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c69d55d3abfc5b4f487e4410df7971626d999d84b25de6ad0ffd5c278f58a1" +source = "git+https://github.com/rust-diplomat/diplomat?rev=8d125999893fedfdf30595e97334c21ec4b18da9#8d125999893fedfdf30595e97334c21ec4b18da9" dependencies = [ "lazy_static", "proc-macro2", @@ -130,18 +127,18 @@ dependencies = [ "serde", "smallvec", "strck_ident", - "syn", + "syn 2.0.15", ] [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] @@ -439,7 +436,7 @@ version = "1.2.0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] @@ -635,22 +632,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.156" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.156" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] @@ -703,15 +700,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "synstructure" -version = "0.12.6" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", "unicode-xid", ] @@ -955,7 +963,7 @@ version = "0.7.1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", "synstructure", ] @@ -972,7 +980,7 @@ version = "0.1.2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", "synstructure", ] @@ -991,6 +999,6 @@ version = "0.9.4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", "synstructure", ] diff --git a/ffi/gn/Cargo.toml b/ffi/gn/Cargo.toml index 3a940f53669..a6237ba9d86 100644 --- a/ffi/gn/Cargo.toml +++ b/ffi/gn/Cargo.toml @@ -27,15 +27,12 @@ rustflags = ["--cfg=use_proc_macro", "--cfg=wrap_proc_macro", "--cfg=proc_macro_ [gn.package.quote."1.0.26"] rustflags = [] -[gn.package.serde."1.0.156"] +[gn.package.serde."1.0.160"] rustflags = [] -[gn.package.serde_derive."1.0.156"] +[gn.package.serde_derive."1.0.160"] rustflags = [] -[gn.package.syn."1.0.109"] -rustflags = ["--cfg=syn_disable_nightly_tests"] - [gn.package.libm."0.2.6"] rustflags = [] diff --git a/ffi/gn/icu4x/BUILD.gn b/ffi/gn/icu4x/BUILD.gn index 04c10852308..5fdd4137bca 100644 --- a/ffi/gn/icu4x/BUILD.gn +++ b/ffi/gn/icu4x/BUILD.gn @@ -44,7 +44,7 @@ rust_proc_macro("diplomat-v0_5_2") { deps += [ ":diplomat_core-v0_5_2" ] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] rustenv = [] @@ -86,10 +86,10 @@ rust_library("diplomat_core-v0_5_2") { deps += [ ":lazy_static-v1_4_0" ] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":serde-v1_0_156" ] + deps += [ ":serde-v1_0_160" ] deps += [ ":smallvec-v1_10_0" ] deps += [ ":strck_ident-v0_1_2" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] rustenv = [] @@ -103,23 +103,23 @@ rust_library("diplomat_core-v0_5_2") { visibility = [ ":*" ] } -rust_proc_macro("displaydoc-v0_2_3") { +rust_proc_macro("displaydoc-v0_2_4") { crate_name = "displaydoc" crate_root = "//ffi/gn/vendor/displaydoc/src/lib.rs" - output_name = "displaydoc-4f6582ea1cadf70c" + output_name = "displaydoc-2956fc8cbe879ef8" deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] rustenv = [] rustflags = [ "--cap-lints=allow", "--edition=2018", - "-Cmetadata=4f6582ea1cadf70c", - "-Cextra-filename=-4f6582ea1cadf70c", + "-Cmetadata=2956fc8cbe879ef8", + "-Cextra-filename=-2956fc8cbe879ef8", ] visibility = [ ":*" ] @@ -150,7 +150,7 @@ rust_library("fixed_decimal-v0_5_3") { output_name = "fixed_decimal-74ba2b51a21a7546" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":ryu-v1_0_13" ] deps += [ ":smallvec-v1_10_0" ] deps += [ ":writeable-v0_5_2" ] @@ -208,7 +208,7 @@ rust_library("icu_calendar-v1_2_0") { output_name = "icu_calendar-b90bea54cbe4b94f" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] deps += [ ":tinystr-v0_7_1" ] @@ -291,7 +291,7 @@ rust_library("icu_collator-v1_2_0") { output_name = "icu_collator-6b59fee278921fa0" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_normalizer-v1_2_0" ] @@ -320,7 +320,7 @@ rust_library("icu_collections-v1_2_0") { output_name = "icu_collections-76c3877bce68c0f9" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":yoke-v0_7_1" ] deps += [ ":zerofrom-v0_1_2" ] deps += [ ":zerovec-v0_9_4" ] @@ -343,7 +343,7 @@ rust_library("icu_datetime-v1_2_1") { output_name = "icu_datetime-cf91c73a3ee7499c" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":either-v1_8_1" ] deps += [ ":fixed_decimal-v0_5_3" ] deps += [ ":icu_calendar-v1_2_0" ] @@ -375,7 +375,7 @@ rust_library("icu_decimal-v1_2_0") { output_name = "icu_decimal-ef118e12a60375a8" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":fixed_decimal-v0_5_3" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] @@ -399,7 +399,7 @@ rust_library("icu_list-v1_2_0") { output_name = "icu_list-aa333fbd7d273d42" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_provider-v1_2_0" ] deps += [ ":regex-automata-v0_2_0" ] deps += [ ":writeable-v0_5_2" ] @@ -422,7 +422,7 @@ rust_library("icu_locid-v1_2_0") { output_name = "icu_locid-60137fe10e9408f3" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":litemap-v0_7_0" ] deps += [ ":tinystr-v0_7_1" ] deps += [ ":writeable-v0_5_2" ] @@ -447,7 +447,7 @@ rust_library("icu_locid_transform-v1_2_1") { output_name = "icu_locid_transform-1b3d062f0eab94f7" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] deps += [ ":tinystr-v0_7_1" ] @@ -472,7 +472,7 @@ rust_library("icu_normalizer-v1_2_0") { output_name = "icu_normalizer-e6be772c6c5735a2" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_properties-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] @@ -500,7 +500,7 @@ rust_library("icu_plurals-v1_2_0") { output_name = "icu_plurals-ac441abca7481711" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":fixed_decimal-v0_5_3" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] @@ -524,7 +524,7 @@ rust_library("icu_properties-v1_2_0") { output_name = "icu_properties-644a493cad5abd1d" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] deps += [ ":tinystr-v0_7_1" ] @@ -550,7 +550,7 @@ rust_library("icu_provider-v1_2_0") { output_name = "icu_provider-2609e712c18ef5fd" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider_macros-v1_2_0($host_toolchain)" ] deps += [ ":stable_deref_trait-v1_2_0" ] @@ -604,7 +604,7 @@ rust_proc_macro("icu_provider_macros-v1_2_0") { deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] rustenv = [] @@ -624,7 +624,7 @@ rust_library("icu_segmenter-v1_2_1") { output_name = "icu_segmenter-9c67817750522b21" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] @@ -700,7 +700,7 @@ rust_library("icu_timezone-v1_2_0") { output_name = "icu_timezone-f88a8122183fc692" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":icu_calendar-v1_2_0" ] deps += [ ":icu_locid-v1_2_0" ] deps += [ ":icu_provider-v1_2_0" ] @@ -906,21 +906,21 @@ rust_library("ryu-v1_0_13") { visibility = [ ":*" ] } -rust_library("serde-v1_0_156") { +rust_library("serde-v1_0_160") { crate_name = "serde" crate_root = "//ffi/gn/vendor/serde/src/lib.rs" - output_name = "serde-dad1c540be95c63" + output_name = "serde-35cd3d9322497386" deps = [] - deps += [ ":serde_derive-v1_0_156($host_toolchain)" ] + deps += [ ":serde_derive-v1_0_160($host_toolchain)" ] rustenv = [] rustflags = [ "--cap-lints=allow", "--edition=2015", - "-Cmetadata=dad1c540be95c63", - "-Cextra-filename=-dad1c540be95c63", + "-Cmetadata=35cd3d9322497386", + "-Cextra-filename=-35cd3d9322497386", "--cfg=feature=\"alloc\"", "--cfg=feature=\"default\"", "--cfg=feature=\"derive\"", @@ -931,23 +931,23 @@ rust_library("serde-v1_0_156") { visibility = [ ":*" ] } -rust_proc_macro("serde_derive-v1_0_156") { +rust_proc_macro("serde_derive-v1_0_160") { crate_name = "serde_derive" crate_root = "//ffi/gn/vendor/serde_derive/src/lib.rs" - output_name = "serde_derive-b99330e8be898925" + output_name = "serde_derive-afd7d039ab171d16" deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] rustenv = [] rustflags = [ "--cap-lints=allow", "--edition=2015", - "-Cmetadata=b99330e8be898925", - "-Cextra-filename=-b99330e8be898925", + "-Cmetadata=afd7d039ab171d16", + "-Cextra-filename=-afd7d039ab171d16", "--cfg=feature=\"default\"", ] @@ -1037,10 +1037,10 @@ rust_library("strck_ident-v0_1_2") { visibility = [ ":*" ] } -rust_library("syn-v1_0_109") { +rust_library("syn-v2_0_15") { crate_name = "syn" crate_root = "//ffi/gn/vendor/syn/src/lib.rs" - output_name = "syn-1f55ec6ab1286b6d" + output_name = "syn-81efed302294e4e7" deps = [] deps += [ ":proc-macro2-v1_0_56" ] @@ -1051,9 +1051,9 @@ rust_library("syn-v1_0_109") { rustflags = [ "--cap-lints=allow", - "--edition=2018", - "-Cmetadata=1f55ec6ab1286b6d", - "-Cextra-filename=-1f55ec6ab1286b6d", + "--edition=2021", + "-Cmetadata=81efed302294e4e7", + "-Cextra-filename=-81efed302294e4e7", "--cfg=feature=\"clone-impls\"", "--cfg=feature=\"default\"", "--cfg=feature=\"derive\"", @@ -1065,21 +1065,20 @@ rust_library("syn-v1_0_109") { "--cfg=feature=\"proc-macro\"", "--cfg=feature=\"quote\"", "--cfg=feature=\"visit\"", - "--cfg=syn_disable_nightly_tests", ] visibility = [ ":*" ] } -rust_library("synstructure-v0_12_6") { +rust_library("synstructure-v0_13_0") { crate_name = "synstructure" crate_root = "//ffi/gn/vendor/synstructure/src/lib.rs" - output_name = "synstructure-b30be16cba2970c4" + output_name = "synstructure-d99d51d75122a755" deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] + deps += [ ":syn-v2_0_15" ] deps += [ ":unicode-xid-v0_2_4" ] rustenv = [] @@ -1087,8 +1086,8 @@ rust_library("synstructure-v0_12_6") { rustflags = [ "--cap-lints=allow", "--edition=2018", - "-Cmetadata=b30be16cba2970c4", - "-Cextra-filename=-b30be16cba2970c4", + "-Cmetadata=d99d51d75122a755", + "-Cextra-filename=-d99d51d75122a755", "--cfg=feature=\"default\"", "--cfg=feature=\"proc-macro\"", ] @@ -1102,7 +1101,7 @@ rust_library("tinystr-v0_7_1") { output_name = "tinystr-29f1288a310491e0" deps = [] - deps += [ ":displaydoc-v0_2_3($host_toolchain)" ] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] deps += [ ":zerovec-v0_9_4" ] rustenv = [] @@ -1261,7 +1260,7 @@ rust_library("yoke-v0_7_1") { output_name = "yoke-818e8d8f2b7ee24f" deps = [] - deps += [ ":serde-v1_0_156" ] + deps += [ ":serde-v1_0_160" ] deps += [ ":stable_deref_trait-v1_2_0" ] deps += [ ":yoke-derive-v0_7_1($host_toolchain)" ] deps += [ ":zerofrom-v0_1_2" ] @@ -1290,8 +1289,8 @@ rust_proc_macro("yoke-derive-v0_7_1") { deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] - deps += [ ":synstructure-v0_12_6" ] + deps += [ ":syn-v2_0_15" ] + deps += [ ":synstructure-v0_13_0" ] rustenv = [] @@ -1336,8 +1335,8 @@ rust_proc_macro("zerofrom-derive-v0_1_2") { deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] - deps += [ ":synstructure-v0_12_6" ] + deps += [ ":syn-v2_0_15" ] + deps += [ ":synstructure-v0_13_0" ] rustenv = [] @@ -1383,8 +1382,8 @@ rust_proc_macro("zerovec-derive-v0_9_4") { deps = [] deps += [ ":proc-macro2-v1_0_56" ] deps += [ ":quote-v1_0_26" ] - deps += [ ":syn-v1_0_109" ] - deps += [ ":synstructure-v0_12_6" ] + deps += [ ":syn-v2_0_15" ] + deps += [ ":synstructure-v0_13_0" ] rustenv = [] diff --git a/provider/datagen/Cargo.toml b/provider/datagen/Cargo.toml index 08469a1bf4c..fc2e83c1586 100644 --- a/provider/datagen/Cargo.toml +++ b/provider/datagen/Cargo.toml @@ -56,7 +56,7 @@ icu_provider_blob = { version = "1.2.0", path = "../blob", features = ["export"] icu_provider_fs = { version = "1.2.0", path = "../fs", features = ["export"], optional = true } crlify = { version = "1.0.1", path = "../../utils/crlify", optional = true } databake = { version = "0.1.3", path = "../../utils/databake", optional = true} -syn = {version = "1.0", features = ["parsing"], optional = true } +syn = {version = "2", features = ["parsing"], optional = true } # Other cached-path = { version = ">=0.5, <0.7", optional = true } diff --git a/provider/macros/Cargo.toml b/provider/macros/Cargo.toml index 92a962a505e..666ae6b1b0f 100644 --- a/provider/macros/Cargo.toml +++ b/provider/macros/Cargo.toml @@ -30,7 +30,7 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["full"]} +syn = { version = "2", features = ["full", "parsing"]} [dev-dependencies] icu_provider = { path = "../core", features = ["macros"] } diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index fee0c8afa33..b4a2942539c 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -24,16 +24,16 @@ extern crate proc_macro; use proc_macro::TokenStream; +use proc_macro2::Span; use proc_macro2::TokenStream as TokenStream2; use quote::quote; +use syn::parenthesized; +use syn::parse::{self, Parse, ParseStream}; use syn::parse_macro_input; +use syn::punctuated::Punctuated; use syn::spanned::Spanned; -use syn::AttributeArgs; use syn::DeriveInput; -use syn::Lit; -use syn::Meta; -use syn::NestedMeta; - +use syn::{Ident, LitStr, Path, Token}; #[cfg(test)] mod tests; @@ -92,12 +92,172 @@ mod tests; /// implement it on the markers. pub fn data_struct(attr: TokenStream, item: TokenStream) -> TokenStream { TokenStream::from(data_struct_impl( - parse_macro_input!(attr as AttributeArgs), + parse_macro_input!(attr as DataStructArgs), parse_macro_input!(item as DeriveInput), )) } -fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 { +pub(crate) struct DataStructArgs { + args: Punctuated, +} + +impl Parse for DataStructArgs { + fn parse(input: ParseStream<'_>) -> parse::Result { + let args = input.parse_terminated(DataStructArg::parse, Token![,])?; + Ok(Self { args }) + } +} +struct DataStructArg { + marker_name: Path, + key_lit: Option, + fallback_by: Option, + extension_key: Option, + fallback_supplement: Option, +} + +impl DataStructArg { + fn new(marker_name: Path) -> Self { + Self { + marker_name, + key_lit: None, + fallback_by: None, + extension_key: None, + fallback_supplement: None, + } + } +} + +impl Parse for DataStructArg { + fn parse(input: ParseStream<'_>) -> parse::Result { + let path: Path = input.parse()?; + + fn at_most_one_option( + o: &mut Option, + new: T, + name: &str, + span: Span, + ) -> parse::Result<()> { + if o.replace(new).is_some() { + Err(parse::Error::new( + span, + format!("marker() cannot contain multiple {name}s"), + )) + } else { + Ok(()) + } + } + + if path.is_ident("marker") { + let content; + let paren = parenthesized!(content in input); + let mut marker_name: Option = None; + let mut key_lit: Option = None; + let mut fallback_by: Option = None; + let mut extension_key: Option = None; + let mut fallback_supplement: Option = None; + let punct = content.parse_terminated(DataStructMarkerArg::parse, Token![,])?; + + for entry in punct.into_iter() { + match entry { + DataStructMarkerArg::Path(path) => { + at_most_one_option(&mut marker_name, path, "marker", input.span())?; + } + DataStructMarkerArg::NameValue(name, value) => { + if name == "fallback_by" { + at_most_one_option( + &mut fallback_by, + value, + "fallback_by", + paren.span.join(), + )?; + } else if name == "extension_key" { + at_most_one_option( + &mut extension_key, + value, + "extension_key", + paren.span.join(), + )?; + } else if name == "fallback_supplement" { + at_most_one_option( + &mut fallback_supplement, + value, + "fallback_supplement", + paren.span.join(), + )?; + } else { + return Err(parse::Error::new( + name.span(), + format!("unknown option {name} in marker()"), + )); + } + } + DataStructMarkerArg::Lit(lit) => { + at_most_one_option(&mut key_lit, lit, "literal key", input.span())?; + } + } + } + let marker_name = if let Some(marker_name) = marker_name { + marker_name + } else { + return Err(parse::Error::new( + input.span(), + "marker() must contain a marker!", + )); + }; + + Ok(Self { + marker_name, + key_lit, + fallback_by, + extension_key, + fallback_supplement, + }) + } else { + let mut this = DataStructArg::new(path); + let lookahead = input.lookahead1(); + if lookahead.peek(Token![=]) { + let _t: Token![=] = input.parse()?; + let lit: LitStr = input.parse()?; + this.key_lit = Some(lit); + Ok(this) + } else { + Ok(this) + } + } + } +} + +/// A single argument to `marker()` in `#[data_struct(..., marker(...), ...)] +enum DataStructMarkerArg { + Path(Path), + NameValue(Ident, LitStr), + Lit(LitStr), +} +impl Parse for DataStructMarkerArg { + fn parse(input: ParseStream<'_>) -> parse::Result { + let lookahead = input.lookahead1(); + if lookahead.peek(LitStr) { + Ok(DataStructMarkerArg::Lit(input.parse()?)) + } else { + let path: Path = input.parse()?; + let lookahead = input.lookahead1(); + if lookahead.peek(Token![=]) { + let _tok: Token![=] = input.parse()?; + let ident = path.get_ident().ok_or_else(|| { + parse::Error::new(path.span(), "Expected identifier before `=`, found path") + })?; + Ok(DataStructMarkerArg::NameValue( + ident.clone(), + input.parse()?, + )) + } else { + Ok(DataStructMarkerArg::Path(path)) + } + } + } +} + +fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { if input.generics.type_params().count() > 0 { return syn::Error::new( input.generics.span(), @@ -126,7 +286,7 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 { let bake_derive = input .attrs .iter() - .find(|a| a.path.is_ident("databake")) + .find(|a| a.path().is_ident("databake")) .map(|a| { quote! { #[derive(databake::Bake)] @@ -137,74 +297,22 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 { let mut result = TokenStream2::new(); - for single_attr in attr.into_iter() { - let mut marker_name: Option = None; - let mut key_lit: Option = None; - let mut fallback_by: Option = None; - let mut extension_key: Option = None; - let mut fallback_supplement: Option = None; - - match single_attr { - NestedMeta::Meta(Meta::List(meta_list)) => { - match meta_list.path.get_ident() { - Some(ident) if ident.to_string().as_str() == "marker" => (), - _ => panic!("Meta list must be `marker(...)`"), - } - for inner_meta in meta_list.nested.into_iter() { - match inner_meta { - NestedMeta::Meta(Meta::Path(path)) => { - marker_name = Some(path); - } - NestedMeta::Lit(Lit::Str(lit_str)) => { - key_lit = Some(lit_str); - } - NestedMeta::Meta(Meta::NameValue(name_value)) => { - let lit_str = match name_value.lit { - Lit::Str(lit_str) => lit_str, - _ => panic!("Values in marker() must be strings"), - }; - let name_ident_str = match name_value.path.get_ident() { - Some(ident) => ident.to_string(), - None => panic!("Names in marker() must be identifiers"), - }; - match name_ident_str.as_str() { - "fallback_by" => fallback_by = Some(lit_str), - "extension_key" => extension_key = Some(lit_str), - "fallback_supplement" => fallback_supplement = Some(lit_str), - _ => panic!("Invalid argument name in marker()"), - } - } - _ => panic!("Invalid argument in marker()"), - } - } - } - NestedMeta::Meta(Meta::NameValue(name_value)) => { - marker_name = Some(name_value.path); - match name_value.lit { - syn::Lit::Str(lit_str) => key_lit = Some(lit_str), - _ => panic!("Key must be a string"), - }; - } - NestedMeta::Meta(Meta::Path(path)) => { - marker_name = Some(path); - } - _ => { - panic!("Invalid attribute to #[data_struct]") - } - } - - let marker_name = match marker_name { - Some(path) => path, - None => panic!("#[data_struct] arguments must include a marker name"), - }; + for single_attr in attr.args.into_iter() { + let DataStructArg { + marker_name, + key_lit, + fallback_by, + extension_key, + fallback_supplement, + } = single_attr; - let docs = if let Some(key_lit) = &key_lit { - let fallback_by_docs_str = match &fallback_by { - Some(fallback_by) => fallback_by.value(), + let docs = if let Some(ref key_lit) = key_lit { + let fallback_by_docs_str = match fallback_by { + Some(ref fallback_by) => fallback_by.value(), None => "language (default)".to_string(), }; - let extension_key_docs_str = match &extension_key { - Some(extension_key) => extension_key.value(), + let extension_key_docs_str = match extension_key { + Some(ref extension_key) => extension_key.value(), None => "none (default)".to_string(), }; format!("Marker type for [`{}`]: \"{}\"\n\n- Fallback priority: {}\n- Extension keyword: {}", name, key_lit.value(), fallback_by_docs_str, extension_key_docs_str) @@ -221,7 +329,7 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 { } )); - if let Some(key_lit) = &key_lit { + if let Some(key_lit) = key_lit { let key_str = key_lit.value(); let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by { match fallback_by_lit.value().as_str() { diff --git a/provider/macros/src/tests.rs b/provider/macros/src/tests.rs index 32be158c780..b985c1af522 100644 --- a/provider/macros/src/tests.rs +++ b/provider/macros/src/tests.rs @@ -5,16 +5,9 @@ use crate::data_struct_impl; use proc_macro2::TokenStream as TokenStream2; use quote::quote; -use syn::{DeriveInput, NestedMeta}; -fn check(attr: Vec, item: TokenStream2, expected: TokenStream2) { - let actual = data_struct_impl( - attr.into_iter() - .map(syn::parse2) - .collect::>>() - .unwrap(), - syn::parse2::(item).unwrap(), - ); +fn check(attr: TokenStream2, item: TokenStream2, expected: TokenStream2) { + let actual = data_struct_impl(syn::parse2(attr).unwrap(), syn::parse2(item).unwrap()); assert_eq!(expected.to_string(), actual.to_string()); } @@ -23,7 +16,7 @@ fn check(attr: Vec, item: TokenStream2, expected: TokenStream2) { fn test_basic() { // #[data_struct] check( - vec![], + quote!(), quote!( pub struct FooV1; ), @@ -38,7 +31,7 @@ fn test_basic() { fn test_data_marker() { // #[data_struct(FooV1Marker)] check( - vec![quote!(FooV1Marker)], + quote!(FooV1Marker), quote!( pub struct FooV1; ), @@ -58,7 +51,7 @@ fn test_data_marker() { fn test_keyed_data_marker() { // #[data_struct(BarV1Marker = "demo/bar@1")] check( - vec![quote!(BarV1Marker = "demo/bar@1")], + quote!(BarV1Marker = "demo/bar@1"), quote!( pub struct FooV1; ), @@ -87,10 +80,10 @@ fn test_keyed_data_marker() { fn test_multi_named_keyed_data_marker() { // #[data_struct(FooV1Marker, BarV1Marker = "demo/bar@1", BazV1Marker = "demo/baz@1")] check( - vec![ - quote!(FooV1Marker), - quote!(BarV1Marker = "demo/bar@1"), - quote!(BazV1Marker = "demo/baz@1"), + quote![ + FooV1Marker, + BarV1Marker = "demo/bar@1", + BazV1Marker = "demo/baz@1", ], quote!( pub struct FooV1<'data>; @@ -138,7 +131,7 @@ fn test_multi_named_keyed_data_marker() { #[test] fn test_databake() { check( - vec![quote!(BarV1Marker = "demo/bar@1")], + quote!(BarV1Marker = "demo/bar@1"), quote!( #[databake(path = test::path)] pub struct FooV1; @@ -171,15 +164,15 @@ fn test_databake() { fn test_attributes() { // #[data_struct(FooV1Marker, marker(BarV1Marker, "demo/bar@1", fallback_by = "region", extension_kw = "ca"))] check( - vec![ - quote!(FooV1Marker), - quote!(marker( + quote![ + FooV1Marker, + marker( BarV1Marker, "demo/bar@1", fallback_by = "region", extension_key = "ca", fallback_supplement = "collation" - )), + ), ], quote!( pub struct FooV1<'data>; diff --git a/tools/ffi_coverage/Cargo.toml b/tools/ffi_coverage/Cargo.toml index e67b57060ba..fb5502d4312 100644 --- a/tools/ffi_coverage/Cargo.toml +++ b/tools/ffi_coverage/Cargo.toml @@ -9,10 +9,10 @@ version = "0.0.0" edition = "2021" [dependencies] -diplomat_core = { version = "0.5.2" } +diplomat_core = { git = "https://github.com/rust-diplomat/diplomat", rev = "8d125999893fedfdf30595e97334c21ec4b18da9" } elsa = "1" lazy_static ="1" rustdoc-types = "0.14" serde_json = "1" -syn-inline-mod = "0.4.0" +syn-inline-mod = "0.6.0" diff --git a/utils/databake/Cargo.toml b/utils/databake/Cargo.toml index f37cd59a883..cfd16ab6210 100644 --- a/utils/databake/Cargo.toml +++ b/utils/databake/Cargo.toml @@ -36,5 +36,5 @@ derive = ["dep:databake-derive"] [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["derive", "fold"] } +syn = { version = "2", features = ["derive", "fold"] } databake-derive = { version = "0.1.5", path = "./derive", optional = true} diff --git a/utils/databake/derive/Cargo.toml b/utils/databake/derive/Cargo.toml index 2d0f74c4d2b..0aa7e8b60d2 100644 --- a/utils/databake/derive/Cargo.toml +++ b/utils/databake/derive/Cargo.toml @@ -33,8 +33,8 @@ path = "src/lib.rs" [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["derive", "fold"] } -synstructure = "0.12.4" +syn = { version = "2", features = ["derive", "fold"] } +synstructure = "0.13" [dev-dependencies] databake = { path = "..", features = ["derive"]} diff --git a/utils/databake/derive/src/lib.rs b/utils/databake/derive/src/lib.rs index e4267fec781..55967b1d2c0 100644 --- a/utils/databake/derive/src/lib.rs +++ b/utils/databake/derive/src/lib.rs @@ -56,7 +56,7 @@ fn bake_derive_impl(input: &DeriveInput) -> TokenStream2 { let path = input .attrs .iter() - .find(|a| a.path.is_ident("databake")) + .find(|a| a.path().is_ident("databake")) .expect("missing databake(path = ...) attribute") .parse_args::() .unwrap() diff --git a/utils/yoke/derive/Cargo.toml b/utils/yoke/derive/Cargo.toml index d23a42c201c..374610bae8e 100644 --- a/utils/yoke/derive/Cargo.toml +++ b/utils/yoke/derive/Cargo.toml @@ -23,8 +23,8 @@ path = "src/lib.rs" [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["derive", "fold"] } -synstructure = "0.12.4" +syn = { version = "2", features = ["derive", "fold"] } +synstructure = "0.13" [dev-dependencies] yoke = { path = "..", features = ["derive"]} diff --git a/utils/zerofrom/derive/Cargo.toml b/utils/zerofrom/derive/Cargo.toml index ddbc7ac67e7..0d39a1c43a8 100644 --- a/utils/zerofrom/derive/Cargo.toml +++ b/utils/zerofrom/derive/Cargo.toml @@ -23,8 +23,8 @@ path = "src/lib.rs" [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["derive", "fold"] } -synstructure = "0.12.4" +syn = { version = "2", features = ["derive", "fold", "visit"] } +synstructure = "0.13" [dev-dependencies] zerofrom = { path = "..", features = ["derive"]} diff --git a/utils/zerovec/derive/Cargo.toml b/utils/zerovec/derive/Cargo.toml index 4f579494429..95127b12387 100644 --- a/utils/zerovec/derive/Cargo.toml +++ b/utils/zerovec/derive/Cargo.toml @@ -23,8 +23,8 @@ path = "src/lib.rs" [dependencies] proc-macro2 = "1.0.27" quote = "1.0.9" -syn = { version = "1.0.73", features = ["derive", "parsing"] } -synstructure = "0.12.4" +syn = { version = "2", features = ["derive", "parsing", "extra-traits"] } +synstructure = "0.13" [dev-dependencies] zerovec = { path = "..", features = ["serde", "derive"] } diff --git a/utils/zerovec/derive/src/lib.rs b/utils/zerovec/derive/src/lib.rs index 5a0de642982..9c3007147ae 100644 --- a/utils/zerovec/derive/src/lib.rs +++ b/utils/zerovec/derive/src/lib.rs @@ -5,8 +5,7 @@ //! Proc macros for generating `ULE`, `VarULE` impls and types for the `zerovec` crate use proc_macro::TokenStream; -use syn::{parse_macro_input, AttributeArgs, DeriveInput}; - +use syn::{parse_macro_input, DeriveInput, Ident}; mod make_ule; mod make_varule; pub(crate) mod ule; @@ -31,7 +30,7 @@ pub fn varule_derive(input: TokenStream) -> TokenStream { #[proc_macro_attribute] pub fn make_ule(attr: TokenStream, item: TokenStream) -> TokenStream { let input = parse_macro_input!(item as DeriveInput); - let attr = parse_macro_input!(attr as AttributeArgs); + let attr = parse_macro_input!(attr as Ident); TokenStream::from(make_ule::make_ule_impl(attr, input)) } @@ -39,6 +38,6 @@ pub fn make_ule(attr: TokenStream, item: TokenStream) -> TokenStream { #[proc_macro_attribute] pub fn make_varule(attr: TokenStream, item: TokenStream) -> TokenStream { let input = parse_macro_input!(item as DeriveInput); - let attr = parse_macro_input!(attr as AttributeArgs); + let attr = parse_macro_input!(attr as Ident); TokenStream::from(make_varule::make_varule_impl(attr, input)) } diff --git a/utils/zerovec/derive/src/make_ule.rs b/utils/zerovec/derive/src/make_ule.rs index fb94cbc2cc5..f87fadb482d 100644 --- a/utils/zerovec/derive/src/make_ule.rs +++ b/utils/zerovec/derive/src/make_ule.rs @@ -6,15 +6,11 @@ use proc_macro2::TokenStream as TokenStream2; use quote::quote; use crate::utils::{self, FieldInfo, ZeroVecAttrs}; -use syn::spanned::Spanned; -use syn::{ - parse_quote, AttributeArgs, Data, DataEnum, DataStruct, DeriveInput, Error, Expr, Fields, - Ident, Lit, -}; - use std::collections::HashSet; +use syn::spanned::Spanned; +use syn::{parse_quote, Data, DataEnum, DataStruct, DeriveInput, Error, Expr, Fields, Ident, Lit}; -pub fn make_ule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream2 { +pub fn make_ule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 { if input.generics.type_params().next().is_some() || input.generics.lifetimes().next().is_some() || input.generics.const_params().next().is_some() @@ -25,17 +21,6 @@ pub fn make_ule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream ) .to_compile_error(); } - - if attr.len() != 1 { - return Error::new( - input.span(), - "#[make_ule] takes one argument for the name of the ULE type it produces", - ) - .to_compile_error(); - } - let arg = &attr[0]; - let ule_name: Ident = parse_quote!(#arg); - let sp = input.span(); let attrs = match utils::extract_attributes_common(&mut input.attrs, sp, false) { Ok(val) => val, @@ -112,7 +97,7 @@ fn make_ule_enum_impl( let mut not_found = HashSet::new(); for (i, variant) in enu.variants.iter().enumerate() { - if variant.fields != Fields::Unit { + if !matches!(variant.fields, Fields::Unit) { // This can be supported in the future, see zerovec/design_doc.md return Error::new( variant.span(), diff --git a/utils/zerovec/derive/src/make_varule.rs b/utils/zerovec/derive/src/make_varule.rs index 62cf0d9dbed..b561ea51e17 100644 --- a/utils/zerovec/derive/src/make_varule.rs +++ b/utils/zerovec/derive/src/make_varule.rs @@ -8,11 +8,11 @@ use proc_macro2::TokenStream as TokenStream2; use quote::{quote, ToTokens}; use syn::spanned::Spanned; use syn::{ - parse_quote, AttributeArgs, Data, DeriveInput, Error, Field, Fields, GenericArgument, Ident, - Lifetime, PathArguments, Type, + parse_quote, Data, DeriveInput, Error, Field, Fields, GenericArgument, Ident, Lifetime, + PathArguments, Type, }; -pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream2 { +pub fn make_varule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 { if input.generics.type_params().next().is_some() || input.generics.const_params().next().is_some() || input.generics.lifetimes().count() > 1 @@ -44,16 +44,6 @@ pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStr let lt = lt.map(|l| &l.lifetime); - if attr.len() != 1 { - return Error::new( - input.span(), - "#[make_ule] takes one argument for the name of the ULE type it produces", - ) - .to_compile_error(); - } - let arg = &attr[0]; - let ule_name: Ident = parse_quote!(#arg); - let name = &input.ident; let fields = match input.data { diff --git a/utils/zerovec/derive/src/utils.rs b/utils/zerovec/derive/src/utils.rs index 3ebf33bf006..8863540c2e4 100644 --- a/utils/zerovec/derive/src/utils.rs +++ b/utils/zerovec/derive/src/utils.rs @@ -9,19 +9,16 @@ use proc_macro2::TokenStream as TokenStream2; use syn::parse::{Parse, ParseStream}; use syn::punctuated::Punctuated; use syn::spanned::Spanned; -use syn::{parenthesized, parse2, Attribute, Error, Field, Fields, Ident, Index, Result, Token}; +use syn::{Attribute, Error, Field, Fields, Ident, Index, Result, Token}; // Check that there are repr attributes satisfying the given predicate pub fn has_valid_repr(attrs: &[Attribute], predicate: impl Fn(&Ident) -> bool + Copy) -> bool { - attrs - .iter() - .filter(|a| a.path.get_ident().map(|a| a == "repr").unwrap_or(false)) - .any(|a| { - parse2::(a.tokens.clone()) - .ok() - .and_then(|s| s.idents.iter().find(|s| predicate(s)).map(|_| ())) - .is_some() - }) + attrs.iter().filter(|a| a.path().is_ident("repr")).any(|a| { + a.parse_args::() + .ok() + .and_then(|s| s.idents.iter().find(|s| predicate(s)).map(|_| ())) + .is_some() + }) } // An attribute that is a list of idents @@ -31,10 +28,8 @@ struct IdentListAttribute { impl Parse for IdentListAttribute { fn parse(input: ParseStream) -> Result { - let content; - let _paren = parenthesized!(content in input); Ok(IdentListAttribute { - idents: content.parse_terminated(Ident::parse)?, + idents: input.parse_terminated(Ident::parse, Token![,])?, }) } } @@ -164,16 +159,16 @@ pub fn extract_parenthetical_zerovec_attrs( let mut error = None; attrs.retain(|a| { // skip the "zerovec" part - let second_segment = a.path.segments.iter().nth(1); + let second_segment = a.path().segments.iter().nth(1); if let Some(second) = second_segment { if second.ident == name { - let list = match parse2::(a.tokens.clone()) { + let list = match a.parse_args::() { Ok(l) => l, Err(_) => { error = Some(Error::new( a.span(), - "#[zerovec::name(..)] takes in a comma separated list of identifiers", + format!("#[zerovec::{name}(..)] takes in a comma separated list of identifiers"), )); return false; } @@ -196,7 +191,7 @@ pub fn extract_parenthetical_zerovec_attrs( pub fn extract_zerovec_attributes(attrs: &mut Vec) -> Vec { let mut ret = vec![]; attrs.retain(|a| { - if a.path.segments.len() == 2 && a.path.segments[0].ident == "zerovec" { + if a.path().segments.len() == 2 && a.path().segments[0].ident == "zerovec" { ret.push(a.clone()); return false; }