diff --git a/Cargo.lock b/Cargo.lock index b864d259ccfa..182dc73f7ce4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2908,9 +2908,9 @@ dependencies = [ [[package]] name = "icu_calendar" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7defdcb785245edd773a38b56f0ccef39065cdc4509a7d85435f6edea0fd58c5" +checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff" dependencies = [ "calendrical_calculations", "displaydoc", @@ -7558,9 +7558,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 832a2ca79232..f1a1a54e95b9 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -2567,6 +2567,11 @@ who = "André Bargull " criteria = "safe-to-deploy" delta = "1.4.0 -> 1.5.1" +[[audits.icu_calendar]] +who = "Max Inden " +criteria = "safe-to-deploy" +delta = "1.5.1 -> 1.5.2" + [[audits.icu_calendar_data]] who = "André Bargull " criteria = "safe-to-deploy" @@ -5752,6 +5757,11 @@ who = "Makoto Kato " criteria = "safe-to-deploy" delta = "0.10.1 -> 0.10.2" +[[audits.zerovec-derive]] +who = "Max Inden " +criteria = "safe-to-deploy" +delta = "0.10.2 -> 0.10.3" + [[audits.zip]] who = "Alex Franchuk " criteria = "safe-to-deploy" diff --git a/third_party/rust/icu_calendar/.cargo-checksum.json b/third_party/rust/icu_calendar/.cargo-checksum.json index 32aee1d6f5ca..0e620b26786e 100644 --- a/third_party/rust/icu_calendar/.cargo-checksum.json +++ b/third_party/rust/icu_calendar/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"923274e39d5235589fc445cc05bc0fe2a8f94c8ed51ea0d373d2a1580b4941c6","Cargo.toml":"92035f3160462280fda2ccc564eaaac54d21141a9726910492ac4f21d828bf7d","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"dbdcc2b74061b42a32920e90038f7cc70b4847b8a61514f7533082f781f8a37d","benches/convert.rs":"4a31671aac5f873987d63222cd7dceed67036f866438f4422f91365b45c7505b","benches/date.rs":"338c32dd2c57a028f5d7f53585caeecf14242a41032a12591b9304c29c7f1da3","benches/datetime.rs":"ac02eaa6e0974078a2109d09d2de48cce061beab036bb98478c328eb9b658dc3","benches/fixtures/datetimes.json":"ad8db74905ad8837b5e75ddc0bb51c1f277a8aa20e486d6927438a8fc7f094a6","benches/fixtures/mod.rs":"c927a527009af7d29bb16fdb893704178ac577ec2688baffa924f24da7f6b040","benches/iso.rs":"c80fa2c7b2554ad3f63bb88e5b31481757dbd916de0be88ae6b8057c3390c33f","examples/iso_date_manipulations.rs":"ed178ed88aa9a900df2841ae1f443ee8a69932ff1119ab3fadba07085c0665b6","examples/iso_datetime_manipulations.rs":"e6f2063ef0e41dca9ab4efa12646ac1f88ddfce80e8a0aa41f77c68c5e759f91","src/any_calendar.rs":"814528488b603ea458602948ac0cc1807ac451951c0cef99bc38adfd1514eacb","src/buddhist.rs":"b2afb680f07f19494697fd3baee9a51ac51c170ad1fffcff57dfd1e68feb7a9c","src/calendar.rs":"d6fb3c39ca92d99eb824a1f112b19163cf6fdd69326a2eaad64687516a5def53","src/calendar_arithmetic.rs":"72a5180b5d2b9526299589c6b5be632ccd599cd1f97f7e6adc57ae7de59d8514","src/chinese.rs":"473980e3c31318db6d09ad2c365a01616d58ad29ccd75e6b27db63b8cfb6d095","src/chinese_based.rs":"d7fdd8429a8d4ce4c6fd412dd838b164956c513823510b50cb75520493b8b7ce","src/coptic.rs":"85a844ce6929a833db41df6246d4cb658b4e3cac7d21dfb6a6746a4ff0057e9b","src/dangi.rs":"5a26869a2c18652db15acabd6c188382aed193554a7ea992870af9ed01eb55e0","src/date.rs":"906b582caf864e757a01c605552b7a68cde4c9f63af1f77828c318ce50d9c092","src/datetime.rs":"238defbf65abf5d21325a364677d1d8174e33f19e88a446a76203828b783cddc","src/duration.rs":"c1ed5463c12fde56fb7dd5db9cd8a8dc576c0999d99abcf2eea4e152f6caae10","src/error.rs":"3ccaeb14c53a79cec8f108c978ae59f384cceebac95dc4ce83cca1a0a38205ec","src/ethiopian.rs":"88fdc4e59c873e49ae4b430cbc56967f228fadb19a5e29a95ab84f9675e07f9a","src/gregorian.rs":"a31c3eb2675b5b401e19a78b0d146a7b8b1a49876c69058479e4bcf3dcec96c3","src/hebrew.rs":"316ae480209068f39921e0bf1e5f51efc0734844cf9efce30b35f3807e38bc1f","src/indian.rs":"48a96ed055bf7daf9fc4b5916ccb24f3c73c87c7c24b02b8e6dc3a484ab5181b","src/islamic.rs":"300c66fb90f4ff4b99f0057ef2460bd6ef4ab57f6339f7b7bdf0c25c4ce2aee9","src/iso.rs":"5d0ee04b06579bc2cead04a679d47c7e81b0f0d119fb3d71ad8e36cbbf661fb2","src/japanese.rs":"771c47978603b0ce33a1ccd76c71d09567d26fa977c9cd9ecfbbd7cbd4dcd57d","src/julian.rs":"28e8db43459b647d493f2c6d6cfb8de1103bbd9ffbb910345b59e67186e05554","src/lib.rs":"f86745c0cb056d8206380d7795c029758be6890fc096ca3124dc0ad2dcb5e51c","src/persian.rs":"f965beb4fd7b911c78b1636c0fbc91a4e769f392a88a5560ed61da3904a7c579","src/provider.rs":"964f04d6b549b701e8e6e967c146cd2a447e0ee516fbdc336711034f92890857","src/provider/chinese_based.rs":"7898b507e0e428e88dbea25836dab99b6cb698b96194995f70bc1f28c95d0f7e","src/provider/islamic.rs":"edf08161c30a27d2d6f470ece9e9a8f3df6909cdadc977da78e58213719b7397","src/roc.rs":"b652e0d6ad5066fe117fa72e4049f1b43629f5e80749b0010a505f95a559ef9e","src/tests/continuity_test.rs":"25994bca29a852ecc06f88cae93b59442cfea34ad783f4909b91e21fe31bf639","src/tests/mod.rs":"0925663ff594ebac9892d652d3576a9bc1ed938b2e4ee7a6d23a641899e8bf5a","src/types.rs":"ad99a40a784e2982b16339f96688ae39ac544524f20bfe2d930a87b53ae6c3a1","src/week_of.rs":"eb2418f224e917824e93305d294dc25331448f98f30908166b03b6e25cd60b5a"},"package":"7defdcb785245edd773a38b56f0ccef39065cdc4509a7d85435f6edea0fd58c5"} \ No newline at end of file +{"files":{"Cargo.lock":"0e4ac88198c582e59afe8c3b8e33ca506b7a13767cc881370089929cfe6cd37f","Cargo.toml":"c4bbe10f4901792e250004b3c20163fc020f7a1288ff79a545da1da23dfb90ef","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"dbdcc2b74061b42a32920e90038f7cc70b4847b8a61514f7533082f781f8a37d","benches/convert.rs":"4a31671aac5f873987d63222cd7dceed67036f866438f4422f91365b45c7505b","benches/date.rs":"338c32dd2c57a028f5d7f53585caeecf14242a41032a12591b9304c29c7f1da3","benches/datetime.rs":"ac02eaa6e0974078a2109d09d2de48cce061beab036bb98478c328eb9b658dc3","benches/fixtures/datetimes.json":"ad8db74905ad8837b5e75ddc0bb51c1f277a8aa20e486d6927438a8fc7f094a6","benches/fixtures/mod.rs":"c927a527009af7d29bb16fdb893704178ac577ec2688baffa924f24da7f6b040","benches/iso.rs":"c80fa2c7b2554ad3f63bb88e5b31481757dbd916de0be88ae6b8057c3390c33f","examples/iso_date_manipulations.rs":"ed178ed88aa9a900df2841ae1f443ee8a69932ff1119ab3fadba07085c0665b6","examples/iso_datetime_manipulations.rs":"e6f2063ef0e41dca9ab4efa12646ac1f88ddfce80e8a0aa41f77c68c5e759f91","src/any_calendar.rs":"814528488b603ea458602948ac0cc1807ac451951c0cef99bc38adfd1514eacb","src/buddhist.rs":"b2afb680f07f19494697fd3baee9a51ac51c170ad1fffcff57dfd1e68feb7a9c","src/calendar.rs":"d6fb3c39ca92d99eb824a1f112b19163cf6fdd69326a2eaad64687516a5def53","src/calendar_arithmetic.rs":"72a5180b5d2b9526299589c6b5be632ccd599cd1f97f7e6adc57ae7de59d8514","src/chinese.rs":"473980e3c31318db6d09ad2c365a01616d58ad29ccd75e6b27db63b8cfb6d095","src/chinese_based.rs":"d7fdd8429a8d4ce4c6fd412dd838b164956c513823510b50cb75520493b8b7ce","src/coptic.rs":"85a844ce6929a833db41df6246d4cb658b4e3cac7d21dfb6a6746a4ff0057e9b","src/dangi.rs":"5a26869a2c18652db15acabd6c188382aed193554a7ea992870af9ed01eb55e0","src/date.rs":"906b582caf864e757a01c605552b7a68cde4c9f63af1f77828c318ce50d9c092","src/datetime.rs":"238defbf65abf5d21325a364677d1d8174e33f19e88a446a76203828b783cddc","src/duration.rs":"c1ed5463c12fde56fb7dd5db9cd8a8dc576c0999d99abcf2eea4e152f6caae10","src/error.rs":"3ccaeb14c53a79cec8f108c978ae59f384cceebac95dc4ce83cca1a0a38205ec","src/ethiopian.rs":"88fdc4e59c873e49ae4b430cbc56967f228fadb19a5e29a95ab84f9675e07f9a","src/gregorian.rs":"a31c3eb2675b5b401e19a78b0d146a7b8b1a49876c69058479e4bcf3dcec96c3","src/hebrew.rs":"316ae480209068f39921e0bf1e5f51efc0734844cf9efce30b35f3807e38bc1f","src/indian.rs":"48a96ed055bf7daf9fc4b5916ccb24f3c73c87c7c24b02b8e6dc3a484ab5181b","src/islamic.rs":"300c66fb90f4ff4b99f0057ef2460bd6ef4ab57f6339f7b7bdf0c25c4ce2aee9","src/iso.rs":"5d0ee04b06579bc2cead04a679d47c7e81b0f0d119fb3d71ad8e36cbbf661fb2","src/japanese.rs":"771c47978603b0ce33a1ccd76c71d09567d26fa977c9cd9ecfbbd7cbd4dcd57d","src/julian.rs":"28e8db43459b647d493f2c6d6cfb8de1103bbd9ffbb910345b59e67186e05554","src/lib.rs":"f86745c0cb056d8206380d7795c029758be6890fc096ca3124dc0ad2dcb5e51c","src/persian.rs":"f965beb4fd7b911c78b1636c0fbc91a4e769f392a88a5560ed61da3904a7c579","src/provider.rs":"964f04d6b549b701e8e6e967c146cd2a447e0ee516fbdc336711034f92890857","src/provider/chinese_based.rs":"fd7f3bcea5bf601df3ad1d23c0cd0b0480e450ee647e9ae5b65208095cdfeab3","src/provider/islamic.rs":"3cbd988aa514db7575fcceb73b3c0e720e45a17f5b942fdc40723fb77c645f73","src/roc.rs":"b652e0d6ad5066fe117fa72e4049f1b43629f5e80749b0010a505f95a559ef9e","src/tests/continuity_test.rs":"25994bca29a852ecc06f88cae93b59442cfea34ad783f4909b91e21fe31bf639","src/tests/mod.rs":"0925663ff594ebac9892d652d3576a9bc1ed938b2e4ee7a6d23a641899e8bf5a","src/types.rs":"ad99a40a784e2982b16339f96688ae39ac544524f20bfe2d930a87b53ae6c3a1","src/week_of.rs":"eb2418f224e917824e93305d294dc25331448f98f30908166b03b6e25cd60b5a"},"package":"7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff"} \ No newline at end of file diff --git a/third_party/rust/icu_calendar/Cargo.lock b/third_party/rust/icu_calendar/Cargo.lock index ae6b4191fa87..0e997e8239fd 100644 --- a/third_party/rust/icu_calendar/Cargo.lock +++ b/third_party/rust/icu_calendar/Cargo.lock @@ -257,7 +257,7 @@ checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "icu_calendar" -version = "1.5.1" +version = "1.5.2" dependencies = [ "calendrical_calculations", "criterion", diff --git a/third_party/rust/icu_calendar/Cargo.toml b/third_party/rust/icu_calendar/Cargo.toml index 6e1287b3c83b..27319d0cd515 100644 --- a/third_party/rust/icu_calendar/Cargo.toml +++ b/third_party/rust/icu_calendar/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.67" name = "icu_calendar" -version = "1.5.1" +version = "1.5.2" authors = ["The ICU4X Project Developers"] include = [ "data/**/*", diff --git a/third_party/rust/icu_calendar/src/provider/chinese_based.rs b/third_party/rust/icu_calendar/src/provider/chinese_based.rs index ebf83436f909..3e2807b62271 100644 --- a/third_party/rust/icu_calendar/src/provider/chinese_based.rs +++ b/third_party/rust/icu_calendar/src/provider/chinese_based.rs @@ -143,7 +143,7 @@ impl<'data> ChineseBasedCacheV1<'data> { derive(databake::Bake), databake(path = icu_calendar::provider), )] -#[repr(packed)] +#[repr(C, packed)] pub struct PackedChineseBasedYearInfo(pub u8, pub u8, pub u8); impl PackedChineseBasedYearInfo { diff --git a/third_party/rust/icu_calendar/src/provider/islamic.rs b/third_party/rust/icu_calendar/src/provider/islamic.rs index 85e70bacb74d..52d54145f173 100644 --- a/third_party/rust/icu_calendar/src/provider/islamic.rs +++ b/third_party/rust/icu_calendar/src/provider/islamic.rs @@ -156,7 +156,7 @@ impl<'data> IslamicCacheV1<'data> { databake(path = icu_calendar::provider), )] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] -#[repr(packed)] +#[repr(C, packed)] pub struct PackedIslamicYearInfo(pub u8, pub u8); impl fmt::Debug for PackedIslamicYearInfo { diff --git a/third_party/rust/zerovec-derive/.cargo-checksum.json b/third_party/rust/zerovec-derive/.cargo-checksum.json index 04f3584d726b..48203670f8a8 100644 --- a/third_party/rust/zerovec-derive/.cargo-checksum.json +++ b/third_party/rust/zerovec-derive/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"d4c03dffac3217dba9bb04c501680856f645ca4916a6908190db93f5e24bc56e","Cargo.toml":"755adc6399988b491e8854b3b383fab1da608b50c61e2eec0f598c9e85d91732","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"bacbc17b2cb457c169257f5e22c78a45d1c4a399eadae383f7732af909616ebc","examples/derives.rs":"2541311f2b532301ab8600927fb2d12a842166ce98d57879997df12dcb928dd2","examples/make.rs":"709829d9aa1fa1d023437dfd8169183690629b71e65cc1316b1f4bf767588cc6","examples/make_var.rs":"933c0ecb44f69f9081e7866a1a782d8501ad947d87b9e4cab6947640c28c3998","src/lib.rs":"029d2b251b8279e7c85d9cc8efb6cad5188da9464b0a27e9de3dd119f4ffef2e","src/make_ule.rs":"5e1abcae7f8ffda8c472f19e4ce2543dc9b4841e644750d2ecb85fcbe0c836f8","src/make_varule.rs":"756384f6f8ae5a40e2a1b02f47bc804f110a907413ea6470152cca13ea912202","src/ule.rs":"1f0a46ff39e43bb19deb9e9a06289350096d4e6ca3f33cb76fec3c84c4a439d8","src/utils.rs":"1b20508f2f61da6c27a628b70ba38fe952cafb065321af0b1ff0f7b05b80211e","src/varule.rs":"b0642df70023b2f04aca692010f6b2a81fd3f3db8612dbae072a200eb04f0913"},"package":"97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7"} \ No newline at end of file +{"files":{"Cargo.lock":"fb1408ba4a7abcd164b9228b7b4096e0946bdd9dd518bd680c8dcbfe141f0351","Cargo.toml":"d60a5ef4e2cb4025065a294c15964f5ad5d2ad4923e339321f4dbb7b7ef11427","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"bacbc17b2cb457c169257f5e22c78a45d1c4a399eadae383f7732af909616ebc","examples/derives.rs":"eda3a1ad0106755bdf71f320d31ad619c62d04e00dba400205ab3072824198b5","examples/make.rs":"709829d9aa1fa1d023437dfd8169183690629b71e65cc1316b1f4bf767588cc6","examples/make_var.rs":"933c0ecb44f69f9081e7866a1a782d8501ad947d87b9e4cab6947640c28c3998","src/lib.rs":"029d2b251b8279e7c85d9cc8efb6cad5188da9464b0a27e9de3dd119f4ffef2e","src/make_ule.rs":"632d21f065728cc3cbdf6ae2cce9181ec72cd54ecdb51baf72d25624ebc1b4d6","src/make_varule.rs":"756384f6f8ae5a40e2a1b02f47bc804f110a907413ea6470152cca13ea912202","src/ule.rs":"f70d237e2ab1732a83e9f6e9cb22d5059f2b3daa2f3616679a9b48555faf70da","src/utils.rs":"72b0d93de4592d1ac4ccd672239385975e7075ff88ea2e1f604cf974d8642f4c","src/varule.rs":"40ddff54a63c902774f75a586dc0d704862e503d270aee3eadcddb8c738b7e67"},"package":"6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"} \ No newline at end of file diff --git a/third_party/rust/zerovec-derive/Cargo.lock b/third_party/rust/zerovec-derive/Cargo.lock index 848a0a7076b8..668a2fbc0170 100644 --- a/third_party/rust/zerovec-derive/Cargo.lock +++ b/third_party/rust/zerovec-derive/Cargo.lock @@ -91,7 +91,7 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "zerovec-derive" -version = "0.10.2" +version = "0.10.3" dependencies = [ "bincode", "proc-macro2", diff --git a/third_party/rust/zerovec-derive/Cargo.toml b/third_party/rust/zerovec-derive/Cargo.toml index b19d5cc774a5..0c88eac86a84 100644 --- a/third_party/rust/zerovec-derive/Cargo.toml +++ b/third_party/rust/zerovec-derive/Cargo.toml @@ -12,7 +12,7 @@ [package] edition = "2021" name = "zerovec-derive" -version = "0.10.2" +version = "0.10.3" authors = ["Manish Goregaokar "] description = "Custom derive for the zerovec crate" readme = "README.md" diff --git a/third_party/rust/zerovec-derive/examples/derives.rs b/third_party/rust/zerovec-derive/examples/derives.rs index 40f821023d9b..e53c444aaa2b 100644 --- a/third_party/rust/zerovec-derive/examples/derives.rs +++ b/third_party/rust/zerovec-derive/examples/derives.rs @@ -6,7 +6,7 @@ use zerovec::ule::AsULE; use zerovec::ule::EncodeAsVarULE; use zerovec::*; -#[repr(packed)] +#[repr(C, packed)] #[derive(ule::ULE, Copy, Clone)] pub struct FooULE { a: u8, @@ -40,7 +40,7 @@ impl AsULE for Foo { } } -#[repr(packed)] +#[repr(C, packed)] #[derive(ule::VarULE)] pub struct RelationULE { /// This maps to (AndOr, Polarity, Operand), diff --git a/third_party/rust/zerovec-derive/src/make_ule.rs b/third_party/rust/zerovec-derive/src/make_ule.rs index b31913f08866..6bd26f489c3a 100644 --- a/third_party/rust/zerovec-derive/src/make_ule.rs +++ b/third_party/rust/zerovec-derive/src/make_ule.rs @@ -83,7 +83,7 @@ fn make_ule_enum_impl( attrs: ZeroVecAttrs, ) -> TokenStream2 { // We could support more int reprs in the future if needed - if !utils::has_valid_repr(&input.attrs, |r| r == "u8") { + if !utils::ReprInfo::compute(&input.attrs).u8 { return Error::new( input.span(), "#[make_ule] can only be applied to #[repr(u8)] enums", diff --git a/third_party/rust/zerovec-derive/src/ule.rs b/third_party/rust/zerovec-derive/src/ule.rs index 6a03c008f4f3..755e66a229b3 100644 --- a/third_party/rust/zerovec-derive/src/ule.rs +++ b/third_party/rust/zerovec-derive/src/ule.rs @@ -10,10 +10,10 @@ use syn::spanned::Spanned; use syn::{Data, DeriveInput, Error}; pub fn derive_impl(input: &DeriveInput) -> TokenStream2 { - if !utils::has_valid_repr(&input.attrs, |r| r == "packed" || r == "transparent") { + if !utils::ReprInfo::compute(&input.attrs).cpacked_or_transparent() { return Error::new( input.span(), - "derive(ULE) must be applied to a #[repr(packed)] or #[repr(transparent)] type", + "derive(ULE) must be applied to a #[repr(C, packed)] or #[repr(transparent)] type", ) .to_compile_error(); } diff --git a/third_party/rust/zerovec-derive/src/utils.rs b/third_party/rust/zerovec-derive/src/utils.rs index 09b5cfa72728..58638aac231c 100644 --- a/third_party/rust/zerovec-derive/src/utils.rs +++ b/third_party/rust/zerovec-derive/src/utils.rs @@ -11,14 +11,38 @@ use syn::punctuated::Punctuated; use syn::spanned::Spanned; 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().is_ident("repr")).any(|a| { - a.parse_args::() - .ok() - .and_then(|s| s.idents.iter().find(|s| predicate(s)).map(|_| ())) - .is_some() - }) +#[derive(Default)] +pub struct ReprInfo { + pub c: bool, + pub transparent: bool, + pub u8: bool, + pub packed: bool, +} + +impl ReprInfo { + pub fn compute(attrs: &[Attribute]) -> Self { + let mut info = ReprInfo::default(); + for attr in attrs.iter().filter(|a| a.path().is_ident("repr")) { + if let Ok(pieces) = attr.parse_args::() { + for piece in pieces.idents.iter() { + if piece == "C" || piece == "c" { + info.c = true; + } else if piece == "transparent" { + info.transparent = true; + } else if piece == "packed" { + info.packed = true; + } else if piece == "u8" { + info.u8 = true; + } + } + } + } + info + } + + pub fn cpacked_or_transparent(self) -> bool { + (self.c && self.packed) || self.transparent + } } // An attribute that is a list of idents @@ -60,7 +84,7 @@ pub fn repr_for(f: &Fields) -> TokenStream2 { if f.len() == 1 { quote!(transparent) } else { - quote!(packed) + quote!(C, packed) } } diff --git a/third_party/rust/zerovec-derive/src/varule.rs b/third_party/rust/zerovec-derive/src/varule.rs index 4a586f9547bf..82fd702578e2 100644 --- a/third_party/rust/zerovec-derive/src/varule.rs +++ b/third_party/rust/zerovec-derive/src/varule.rs @@ -15,10 +15,10 @@ pub fn derive_impl( input: &DeriveInput, custom_varule_validator: Option, ) -> TokenStream2 { - if !utils::has_valid_repr(&input.attrs, |r| r == "packed" || r == "transparent") { + if !utils::ReprInfo::compute(&input.attrs).cpacked_or_transparent() { return Error::new( input.span(), - "derive(VarULE) must be applied to a #[repr(packed)] or #[repr(transparent)] type", + "derive(VarULE) must be applied to a #[repr(C, packed)] or #[repr(transparent)] type", ) .to_compile_error(); }