mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
Merge pull request #11 from DCNick3/2024-edition
fix `unsafe_op_in_unsafe_fn` in generated code on 2024 edition
This commit is contained in:
commit
0b781fa64a
2 changed files with 15 additions and 3 deletions
|
|
@ -35,6 +35,12 @@ pub fn derive_encode_enum(params: &EnumParam, unchecked: bool) -> TokenStream {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let r#unsafe = if unchecked {
|
||||||
|
quote_spanned!(span => unsafe)
|
||||||
|
} else {
|
||||||
|
quote_spanned!(span =>)
|
||||||
|
};
|
||||||
|
|
||||||
let read_fn = Ident::new(
|
let read_fn = Ident::new(
|
||||||
if unchecked {
|
if unchecked {
|
||||||
"read_int_unchecked"
|
"read_int_unchecked"
|
||||||
|
|
@ -58,7 +64,7 @@ pub fn derive_encode_enum(params: &EnumParam, unchecked: bool) -> TokenStream {
|
||||||
|
|
||||||
quote_spanned! {span =>
|
quote_spanned! {span =>
|
||||||
#[allow(clippy::unnecessary_cast)]
|
#[allow(clippy::unnecessary_cast)]
|
||||||
let discriminant:#repr = __stream.#read_fn(#discriminant_bits as usize, #end_param)#error_handle;
|
let discriminant:#repr = #r#unsafe { __stream.#read_fn(#discriminant_bits as usize, #end_param)#error_handle };
|
||||||
match discriminant {
|
match discriminant {
|
||||||
#(#match_arms)*
|
#(#match_arms)*
|
||||||
_ => {
|
_ => {
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,12 @@ pub fn read_struct_or_enum(
|
||||||
let align = &f.align;
|
let align = &f.align;
|
||||||
let field_type = &f.ty;
|
let field_type = &f.ty;
|
||||||
let span = f.span();
|
let span = f.span();
|
||||||
|
let r#unsafe = if unchecked {
|
||||||
|
quote_spanned!(span => unsafe)
|
||||||
|
} else {
|
||||||
|
quote_spanned!(span =>)
|
||||||
|
};
|
||||||
|
|
||||||
let read_fn = Ident::new(if unchecked { "read_unchecked" } else { "read" }, span);
|
let read_fn = Ident::new(if unchecked { "read_unchecked" } else { "read" }, span);
|
||||||
let read_sized_fn = Ident::new(
|
let read_sized_fn = Ident::new(
|
||||||
if unchecked {
|
if unchecked {
|
||||||
|
|
@ -31,7 +37,7 @@ pub fn read_struct_or_enum(
|
||||||
match &f.size {
|
match &f.size {
|
||||||
Some(size) => {
|
Some(size) => {
|
||||||
quote_spanned! { span =>
|
quote_spanned! { span =>
|
||||||
{
|
#r#unsafe {
|
||||||
#align
|
#align
|
||||||
let _size: usize = #size;
|
let _size: usize = #size;
|
||||||
__stream.#read_sized_fn::<#field_type>(_size, #end_param)?
|
__stream.#read_sized_fn::<#field_type>(_size, #end_param)?
|
||||||
|
|
@ -40,7 +46,7 @@ pub fn read_struct_or_enum(
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
quote_spanned! { span =>
|
quote_spanned! { span =>
|
||||||
{
|
#r#unsafe {
|
||||||
#align
|
#align
|
||||||
__stream.#read_fn::<#field_type>(#end_param)?
|
__stream.#read_fn::<#field_type>(#end_param)?
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue