From 14accf751801d34a2c015efcce31c0743622e63e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 23 Aug 2021 10:11:18 -0700 Subject: [PATCH] Add test of remote with a packed struct Currently fails to build: error: reference to packed field is unaligned --> test_suite/tests/test_gen.rs:858:10 | 858 | #[derive(Serialize, Deserialize)] | ^^^^^^^^^ | note: the lint level is defined here --> test_suite/tests/test_gen.rs:5:9 | 5 | #![deny(warnings)] | ^^^^^^^^ = note: `#[deny(unaligned_references)]` implied by `#[deny(warnings)]` = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) = note: this error originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) error: reference to packed field is unaligned --> test_suite/tests/test_gen.rs:858:21 | 858 | #[derive(Serialize, Deserialize)] | ^^^^^^^^^^^ | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) = note: this error originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) --- test_suite/tests/test_gen.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test_suite/tests/test_gen.rs b/test_suite/tests/test_gen.rs index 93d5cd3a5..3e19d3c4b 100644 --- a/test_suite/tests/test_gen.rs +++ b/test_suite/tests/test_gen.rs @@ -846,3 +846,19 @@ where { T::deserialize(deserializer) } + +////////////////////////////////////////////////////////////////////////// + +#[repr(packed)] +pub struct RemotePacked { + pub a: u8, + pub b: u16, +} + +#[derive(Serialize, Deserialize)] +#[repr(packed)] +#[serde(remote = "RemotePacked")] +pub struct RemotePackedDef { + a: u8, + b: u16, +}