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"