diff options
author | Christian Poveda <christian.poveda@ferrous-systems.com> | 2022-09-26 10:50:46 -0500 |
---|---|---|
committer | Christian Poveda <christian.poveda@ferrous-systems.com> | 2022-09-26 10:50:46 -0500 |
commit | 76e8fa29f945477b92c780aa782624a8d8a65488 (patch) | |
tree | 4e1fc959ed0804ec57db2492da55708f80310914 /src/codegen/mod.rs | |
parent | 0e4c1ae92c8ab89bf2285cf3b4540821fb480850 (diff) | |
parent | 0798bdaccfd352c9b2394b1741508000b99ba1bb (diff) |
Merge remote-tracking branch 'emilio/less-macro-magic' into sovereign-module-of-syn
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r-- | src/codegen/mod.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index bc2c9fe2..5660b126 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -837,9 +837,34 @@ impl CodeGenerator for Type { } // If this is a known named type, disallow generating anything - // for it too. + // for it too. If size_t -> usize conversions are enabled, we + // need to check that these conversions are permissible, but + // nothing needs to be generated, still. let spelling = self.name().expect("Unnamed alias?"); if utils::type_from_named(ctx, spelling).is_some() { + if let "size_t" | "ssize_t" = spelling { + let layout = inner_item + .kind() + .expect_type() + .layout(ctx) + .expect("No layout?"); + assert_eq!( + layout.size, + ctx.target_pointer_size(), + "Target platform requires `--no-size_t-is-usize`. The size of `{}` ({}) does not match the target pointer size ({})", + spelling, + layout.size, + ctx.target_pointer_size(), + ); + assert_eq!( + layout.align, + ctx.target_pointer_size(), + "Target platform requires `--no-size_t-is-usize`. The alignment of `{}` ({}) does not match the target pointer size ({})", + spelling, + layout.align, + ctx.target_pointer_size(), + ); + } return; } |