From 60f6c3a9232563403634178bd2be5f5e847604ea Mon Sep 17 00:00:00 2001 From: Richard Pringle Date: Thu, 19 Sep 2024 17:17:06 -0400 Subject: [PATCH] Use repr(packed) with state-keys --- x/contracts/sdk-macros/src/state_schema.rs | 2 +- .../tests/ui/fail/state-schema-with-padding-in-key.stderr | 8 -------- .../ui/{fail => pass}/state-schema-with-padding-in-key.rs | 0 3 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.stderr rename x/contracts/sdk-macros/tests/ui/{fail => pass}/state-schema-with-padding-in-key.rs (100%) diff --git a/x/contracts/sdk-macros/src/state_schema.rs b/x/contracts/sdk-macros/src/state_schema.rs index e28efd4c24..4b9b00e6ae 100644 --- a/x/contracts/sdk-macros/src/state_schema.rs +++ b/x/contracts/sdk-macros/src/state_schema.rs @@ -36,7 +36,7 @@ pub fn impl_state_schema( #(#key_comments)* #[derive(Copy, Clone, wasmlanche::bytemuck::NoUninit)] #[bytemuck(crate = "wasmlanche::bytemuck")] - #[repr(C)] + #[repr(C, packed)] #key_vis struct #key_type_name #key_fields; wasmlanche::prefixed_key_size_check!(wasmlanche::macro_types, #key_type_name); diff --git a/x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.stderr b/x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.stderr deleted file mode 100644 index 72a35807ad..0000000000 --- a/x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error[E0512]: cannot transmute between types of different sizes, or dependently-sized types - --> tests/ui/fail/state-schema-with-padding-in-key.rs:7:5 - | -7 | Key(u16, u8) => u8, - | ^^^ - | - = note: source type: `Key` (32 bits) - = note: target type: `_::{closure#0}::TypeWithoutPadding` (24 bits) diff --git a/x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.rs b/x/contracts/sdk-macros/tests/ui/pass/state-schema-with-padding-in-key.rs similarity index 100% rename from x/contracts/sdk-macros/tests/ui/fail/state-schema-with-padding-in-key.rs rename to x/contracts/sdk-macros/tests/ui/pass/state-schema-with-padding-in-key.rs