Update bytemuck_derive to 1.8.1 Test: m Change-Id: I9f8d2b94deaaab0267a29bd74d1f6d7ebb894690
diff --git a/crates/bytemuck_derive/.android-checksum.json b/crates/bytemuck_derive/.android-checksum.json index bb902cd..76e6007 100644 --- a/crates/bytemuck_derive/.android-checksum.json +++ b/crates/bytemuck_derive/.android-checksum.json
@@ -1 +1 @@ -{"package":null,"files":{".cargo-checksum.json":"93ee1c559596816b9174b5417b871fb4251c5c90b81ed13c895f1d2ddbd2f985","Android.bp":"0ce2998c18742159c104396fe43a7d7ec5e09ef69039f2094f4b5f4e14ee1712","Cargo.toml":"44530987c58a237137171c46024c0e1748d017857f4e5f3c3a53ffd0fb4b0a09","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-MIT":"cec4013700872627ee18d2128d3bbde3e1bf1912a61eec493299dc0f434300fb","LICENSE-ZLIB":"a5748e7b6f484bb179d81e382c7cf9526f2da5dc1b027844ae85ed0b739cb56d","METADATA":"9b63c95b95ffd255174c2f14113c1ec609e408d3505f5882ee933fec50e0222d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ad55c0eb37f7af0fb65cdc127877160ea0f80c5e603baeec8e0d56a5b5561cc","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","changelog.md":"88b295be621a357fe47cb34523ebdc79ea387341438d2a008836a424bef9107f","src/lib.rs":"7457a7a522cd9e3df11e6a19c45430ba75a7a18f4068c682ce916b3d9aa5c3b8","src/traits.rs":"1a932133d6dfb97186fda6c3bcc1ad7529e8cbc9bb8f17904f0f076bd34e4481","tests/basic.rs":"7899d9643c558d46beebae9d3ac2c07705f0128dee6ec35b316c00981e033e4d"}} \ No newline at end of file +{"package":null,"files":{".cargo-checksum.json":"e4ee0b1bd553e570de5db41cda3940c9b07af519c2fb0f2ab378f342f0e4a92f","Android.bp":"aa6fead74b01d7f33f9df63748546fbfa21d33195de1c5a21b73a94f0327f5de","Cargo.toml":"374db6c8a35d1ce7fa5bac692aa25b958d300143db568f28b89636fb5d57b46f","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-MIT":"cec4013700872627ee18d2128d3bbde3e1bf1912a61eec493299dc0f434300fb","LICENSE-ZLIB":"a5748e7b6f484bb179d81e382c7cf9526f2da5dc1b027844ae85ed0b739cb56d","METADATA":"e0a212a08f51629c9cdd4bcec9b7a32caf9b37d0a17b5e9ea3bf7321787efe4c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ad55c0eb37f7af0fb65cdc127877160ea0f80c5e603baeec8e0d56a5b5561cc","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","changelog.md":"1909a39ed7dfcc2f070340f6814d8b3b32acf0bc17b90bc65b051a074a038816","src/lib.rs":"7457a7a522cd9e3df11e6a19c45430ba75a7a18f4068c682ce916b3d9aa5c3b8","src/traits.rs":"5ac4b210e85fef6de818909063df8dd663c371d4ba6a66de7ba3e0119fc263d8","tests/basic.rs":"efee0fe9c11ecddce8fad32a543fa55a8a567a2bac95cd0814bf4087ba617980"}} \ No newline at end of file
diff --git a/crates/bytemuck_derive/.cargo-checksum.json b/crates/bytemuck_derive/.cargo-checksum.json index 6050b77..c94d743 100644 --- a/crates/bytemuck_derive/.cargo-checksum.json +++ b/crates/bytemuck_derive/.cargo-checksum.json
@@ -1 +1 @@ -{"files":{"Cargo.toml":"eb59635b1dbdcebec55b8d659d46ccf8c11a70c29b73aa6e596a36f18430d76f","LICENSE-APACHE":"870e20c217d15bcfcbe53d7c5867cd8fac44a4ca0b41fc1eb843557e16063eba","LICENSE-MIT":"0b2d108c9c686a74ac312990ee8377902756a2a081a7af3b0f9d68abf0a8f1a1","LICENSE-ZLIB":"682b4c81b85e83ce6cc6e1ace38fdd97aeb4de0e972bd2b44aa0916c54af8c96","README.md":"c44fcbb0a6555b948e7c0b26313ecdc5f3079ebd1ae74aadcc42fd1ba1245540","changelog.md":"aa98c2da53872d27a22c05b6ad3f79ab6a2b6d1f0c57d00198d0d6936736288e","src/lib.rs":"4514b4458c6968b6d80815c0d77a3babf341d29484deb9221091311fc90bd482","src/traits.rs":"776a3f915478970ec3e4f5629f50d179094c56cdbe9e2e09e72e13697b359ced","tests/basic.rs":"6bc13c649c0e42b3cb008de7640d8531fa54e61ef1e083b614fd4c3e14b97cb9"},"package":"bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec"} \ No newline at end of file +{"files":{"Cargo.toml":"11f3717530ac2c9e35e816b5cb27d4368a0d0a7ad59479922d99d569f9669a80","LICENSE-APACHE":"870e20c217d15bcfcbe53d7c5867cd8fac44a4ca0b41fc1eb843557e16063eba","LICENSE-MIT":"0b2d108c9c686a74ac312990ee8377902756a2a081a7af3b0f9d68abf0a8f1a1","LICENSE-ZLIB":"682b4c81b85e83ce6cc6e1ace38fdd97aeb4de0e972bd2b44aa0916c54af8c96","README.md":"c44fcbb0a6555b948e7c0b26313ecdc5f3079ebd1ae74aadcc42fd1ba1245540","changelog.md":"39618d97244931aafa42785cca7900631fc940f1140148cf091484defb5ca93e","src/lib.rs":"4514b4458c6968b6d80815c0d77a3babf341d29484deb9221091311fc90bd482","src/traits.rs":"e46a008f52322aab531d5e34bd52dbfde2ad9ed9ed4dc94cce59e652afe1cdb0","tests/basic.rs":"65bd5619d9277c45d93b2076e5eb167bc68cf9131d38ee954645ab2a51b00319"},"package":"3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"} \ No newline at end of file
diff --git a/crates/bytemuck_derive/Android.bp b/crates/bytemuck_derive/Android.bp index 091262b..24bb367 100644 --- a/crates/bytemuck_derive/Android.bp +++ b/crates/bytemuck_derive/Android.bp
@@ -17,7 +17,7 @@ name: "libbytemuck_derive", crate_name: "bytemuck_derive", cargo_env_compat: true, - cargo_pkg_version: "1.8.0", + cargo_pkg_version: "1.8.1", crate_root: "src/lib.rs", edition: "2018", rustlibs: [
diff --git a/crates/bytemuck_derive/Cargo.toml b/crates/bytemuck_derive/Cargo.toml index db094c0..bb2368b 100644 --- a/crates/bytemuck_derive/Cargo.toml +++ b/crates/bytemuck_derive/Cargo.toml
@@ -12,7 +12,7 @@ [package] edition = "2018" name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" authors = ["Lokathor <[email protected]>"] build = false autobins = false
diff --git a/crates/bytemuck_derive/METADATA b/crates/bytemuck_derive/METADATA index 450d3e5..46df856 100644 --- a/crates/bytemuck_derive/METADATA +++ b/crates/bytemuck_derive/METADATA
@@ -1,17 +1,17 @@ name: "bytemuck_derive" description: "derive proc-macros for `bytemuck`" third_party { - version: "1.8.0" + version: "1.8.1" license_type: NOTICE last_upgrade_date { - year: 2024 - month: 12 - day: 19 + year: 2025 + month: 1 + day: 14 } homepage: "https://crates.io/crates/bytemuck_derive" identifier { type: "Archive" - value: "https://static.crates.io/crates/bytemuck_derive/bytemuck_derive-1.8.0.crate" - version: "1.8.0" + value: "https://static.crates.io/crates/bytemuck_derive/bytemuck_derive-1.8.1.crate" + version: "1.8.1" } }
diff --git a/crates/bytemuck_derive/changelog.md b/crates/bytemuck_derive/changelog.md index b41af0c..38b8d7f 100644 --- a/crates/bytemuck_derive/changelog.md +++ b/crates/bytemuck_derive/changelog.md
@@ -1,6 +1,10 @@ ## `bytemuck_derive` changelog +## 1.8.1 + +* https://github.com/Lokathor/bytemuck/pull/287 + ## 1.8 * [#257](https://github.com/Lokathor/bytemuck/pull/257): Allows deriving Zeroable on some enums.
diff --git a/crates/bytemuck_derive/src/traits.rs b/crates/bytemuck_derive/src/traits.rs index 50fbfb8..d94c846 100644 --- a/crates/bytemuck_derive/src/traits.rs +++ b/crates/bytemuck_derive/src/traits.rs
@@ -2,7 +2,7 @@ use std::{cmp, convert::TryFrom}; use proc_macro2::{Ident, Span, TokenStream, TokenTree}; -use quote::{quote, quote_spanned, ToTokens}; +use quote::{quote, ToTokens}; use syn::{ parse::{Parse, ParseStream, Parser}, punctuated::Punctuated, @@ -553,7 +553,7 @@ /// Extract the `Fields` off a `DeriveInput`, or, in the `enum` case, off /// those of the `enum_variant`, when provided (e.g., for `Zeroable`). -/// +/// /// We purposely allow not providing an `enum_variant` for cases where /// the caller wants to reject supporting `enum`s (e.g., `NoPadding`). fn get_fields( @@ -607,19 +607,27 @@ let field_name = &field_names[..]; let field_ty = &field_tys[..]; - let derive_dbg = - quote!(#[cfg_attr(not(target_arch = "spirv"), derive(Debug))]); - Ok(( quote! { #[doc = #GENERATED_TYPE_DOCUMENTATION] #repr #[derive(Clone, Copy, #crate_name::AnyBitPattern)] - #derive_dbg #[allow(missing_docs)] pub struct #bits_ty { #(#field_name: <#field_ty as #crate_name::CheckedBitPattern>::Bits,)* } + + #[allow(unexpected_cfgs)] + const _: () = { + #[cfg(not(target_arch = "spirv"))] + impl ::core::fmt::Debug for #bits_ty { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#bits_ty)); + #(::core::fmt::DebugStruct::field(&mut debug_struct, ::core::stringify!(#field_name), &self.#field_name);)* + ::core::fmt::DebugStruct::finish(&mut debug_struct) + } + } + }; }, quote! { type Bits = #bits_ty; @@ -664,7 +672,7 @@ )?; let check = if count == 0 { - quote_spanned!(span => false) + quote!(false) } else if max - min == count - 1 { // contiguous range let min_lit = LitInt::new(&format!("{}", min), span); @@ -711,9 +719,6 @@ let representation = get_repr(&input.attrs)?; let vis = &input.vis; - let derive_dbg = - quote!(#[cfg_attr(not(target_arch = "spirv"), derive(Debug))]); - match representation.repr { Repr::Rust => unreachable!(), repr @ (Repr::C | Repr::CWithDiscriminant(_)) => { @@ -793,13 +798,25 @@ quote! { #[doc = #GENERATED_TYPE_DOCUMENTATION] #[derive(::core::clone::Clone, ::core::marker::Copy, #crate_name::AnyBitPattern)] - #derive_dbg #bits_repr #vis struct #bits_ty_ident { tag: #integer, payload: #variants_union_ident, } + #[allow(unexpected_cfgs)] + const _: () = { + #[cfg(not(target_arch = "spirv"))] + impl ::core::fmt::Debug for #bits_ty_ident { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#bits_ty_ident)); + ::core::fmt::DebugStruct::field(&mut debug_struct, "tag", &self.tag); + ::core::fmt::DebugStruct::field(&mut debug_struct, "payload", &self.payload); + ::core::fmt::DebugStruct::finish(&mut debug_struct) + } + } + }; + #[derive(::core::clone::Clone, ::core::marker::Copy, #crate_name::AnyBitPattern)] #[repr(C)] #[allow(non_snake_case)] @@ -807,13 +824,16 @@ #(#union_fields,)* } - #[cfg(not(target_arch = "spirv"))] - impl ::core::fmt::Debug for #variants_union_ident { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#variants_union_ident)); - ::core::fmt::DebugStruct::finish_non_exhaustive(&mut debug_struct) + #[allow(unexpected_cfgs)] + const _: () = { + #[cfg(not(target_arch = "spirv"))] + impl ::core::fmt::Debug for #variants_union_ident { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#variants_union_ident)); + ::core::fmt::DebugStruct::finish_non_exhaustive(&mut debug_struct) + } } - } + }; #(#variant_struct_definitions)* }, @@ -930,14 +950,17 @@ #(#union_fields,)* } - #[cfg(not(target_arch = "spirv"))] - impl ::core::fmt::Debug for #bits_ty_ident { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#bits_ty_ident)); - ::core::fmt::DebugStruct::field(&mut debug_struct, "tag", unsafe { &self.__tag }); - ::core::fmt::DebugStruct::finish_non_exhaustive(&mut debug_struct) + #[allow(unexpected_cfgs)] + const _: () = { + #[cfg(not(target_arch = "spirv"))] + impl ::core::fmt::Debug for #bits_ty_ident { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + let mut debug_struct = ::core::fmt::Formatter::debug_struct(f, ::core::stringify!(#bits_ty_ident)); + ::core::fmt::DebugStruct::field(&mut debug_struct, "tag", unsafe { &self.__tag }); + ::core::fmt::DebugStruct::finish_non_exhaustive(&mut debug_struct) + } } - } + }; #(#variant_struct_definitions)* }, @@ -962,22 +985,20 @@ /// is equal to the sum of the size of it's fields fn generate_assert_no_padding(input: &DeriveInput) -> Result<TokenStream> { let struct_type = &input.ident; - let span = input.ident.span(); let enum_variant = None; // `no padding` check is not supported for `enum`s yet. let fields = get_fields(input, enum_variant)?; let mut field_types = get_field_types(&fields); let size_sum = if let Some(first) = field_types.next() { - let size_first = quote_spanned!(span => ::core::mem::size_of::<#first>()); - let size_rest = - quote_spanned!(span => #( + ::core::mem::size_of::<#field_types>() )*); + let size_first = quote!(::core::mem::size_of::<#first>()); + let size_rest = quote!(#( + ::core::mem::size_of::<#field_types>() )*); - quote_spanned!(span => #size_first #size_rest) + quote!(#size_first #size_rest) } else { - quote_spanned!(span => 0) + quote!(0) }; - Ok(quote_spanned! {span => const _: fn() = || { + Ok(quote! {const _: fn() = || { #[doc(hidden)] struct TypeWithoutPadding([u8; #size_sum]); let _ = ::core::mem::transmute::<#struct_type, TypeWithoutPadding>; @@ -991,9 +1012,8 @@ let (impl_generics, _ty_generics, where_clause) = input.generics.split_for_impl(); let fields = get_fields(input, enum_variant)?; - let span = input.span(); let field_types = get_field_types(&fields); - Ok(quote_spanned! {span => #(const _: fn() = || { + Ok(quote! {#(const _: fn() = || { #[allow(clippy::missing_const_for_fn)] #[doc(hidden)] fn check #impl_generics () #where_clause {
diff --git a/crates/bytemuck_derive/tests/basic.rs b/crates/bytemuck_derive/tests/basic.rs index 72e471b..daa96d4 100644 --- a/crates/bytemuck_derive/tests/basic.rs +++ b/crates/bytemuck_derive/tests/basic.rs
@@ -1,4 +1,5 @@ #![allow(dead_code)] +#![deny(clippy::allow_attributes)] use bytemuck::{ checked::CheckedCastError, AnyBitPattern, CheckedBitPattern, Contiguous,
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock index f3d7a7c..5f9dc0e 100644 --- a/pseudo_crate/Cargo.lock +++ b/pseudo_crate/Cargo.lock
@@ -997,9 +997,9 @@ [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2 1.0.92", "quote 1.0.37",
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml index 7a9a033..fbf8d91 100644 --- a/pseudo_crate/Cargo.toml +++ b/pseudo_crate/Cargo.toml
@@ -42,7 +42,7 @@ bstr = "=1.3.0" buddy_system_allocator = "=0.11.0" bytemuck = "=1.21.0" -bytemuck_derive = "=1.8.0" +bytemuck_derive = "=1.8.1" byteorder = "=1.5.0" bytes = "=1.9.0" camino = "=1.1.9"