mirror of
https://github.com/Lokathor/bytemuck.git
synced 2024-11-21 22:32:23 +00:00
parent
995205de23
commit
d47d527ac2
@ -592,6 +592,11 @@ fn get_repr(attributes: &[Attribute]) -> Result<Representation> {
|
|||||||
| (None, b) => b,
|
| (None, b) => b,
|
||||||
| _ => bail!("conflicting representation hints"),
|
| _ => bail!("conflicting representation hints"),
|
||||||
},
|
},
|
||||||
|
align: match (a.align, b.align) {
|
||||||
|
| (a, None) => a,
|
||||||
|
| (None, b) => b,
|
||||||
|
| _ => bail!("conflicting representation hints"),
|
||||||
|
},
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -643,12 +648,13 @@ macro_rules! mk_repr {(
|
|||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy)]
|
||||||
struct Representation {
|
struct Representation {
|
||||||
packed: Option<u32>,
|
packed: Option<u32>,
|
||||||
|
align: Option<u32>,
|
||||||
repr: Repr,
|
repr: Repr,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Representation {
|
impl Default for Representation {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self { packed: None, repr: Repr::Rust }
|
Self { packed: None, align: None, repr: Repr::Rust }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,6 +678,12 @@ macro_rules! mk_repr {(
|
|||||||
let _: Option<Token![,]> = input.parse()?;
|
let _: Option<Token![,]> = input.parse()?;
|
||||||
continue;
|
continue;
|
||||||
},
|
},
|
||||||
|
"align" => {
|
||||||
|
let contents; parenthesized!(contents in input);
|
||||||
|
ret.align = Some(LitInt::base10_parse::<u32>(&contents.parse()?)?);
|
||||||
|
let _: Option<Token![,]> = input.parse()?;
|
||||||
|
continue;
|
||||||
|
},
|
||||||
$(
|
$(
|
||||||
stringify!($xn) => Repr::$Xn,
|
stringify!($xn) => Repr::$Xn,
|
||||||
)*
|
)*
|
||||||
|
@ -185,3 +185,7 @@ fn anybitpattern_implies_zeroable() {
|
|||||||
let test = AnyBitPatternTest::zeroed();
|
let test = AnyBitPatternTest::zeroed();
|
||||||
assert_eq!(test, AnyBitPatternTest { a: 0, b: 0 });
|
assert_eq!(test, AnyBitPatternTest { a: 0, b: 0 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
|
||||||
|
#[repr(C, align(16))]
|
||||||
|
struct Issue127 {}
|
||||||
|
Loading…
Reference in New Issue
Block a user