Map size_t to usize by default and check compatibility (fixes #1901, … · rust-lang/rust-bindgen@cc78b6f (original) (raw)
`@@ -836,9 +836,34 @@ impl CodeGenerator for Type {
`
836
836
`}
`
837
837
``
838
838
`// If this is a known named type, disallow generating anything
`
839
``
`-
// for it too.
`
``
839
`+
// for it too. If size_t -> usize conversions are enabled, we
`
``
840
`+
// need to check that these conversions are permissible, but
`
``
841
`+
// nothing needs to be generated, still.
`
840
842
`let spelling = self.name().expect("Unnamed alias?");
`
841
843
`if utils::type_from_named(ctx, spelling).is_some() {
`
``
844
`+
if let "size_t" | "ssize_t" = spelling {
`
``
845
`+
let layout = inner_item
`
``
846
`+
.kind()
`
``
847
`+
.expect_type()
`
``
848
`+
.layout(ctx)
`
``
849
`+
.expect("No layout?");
`
``
850
`+
assert_eq!(
`
``
851
`+
layout.size,
`
``
852
`+
ctx.target_pointer_size(),
`
``
853
`` +
"Target platform requires --no-size_t-is-usize
. The size of {}
({}) does not match the target pointer size ({})",
``
``
854
`+
spelling,
`
``
855
`+
layout.size,
`
``
856
`+
ctx.target_pointer_size(),
`
``
857
`+
);
`
``
858
`+
assert_eq!(
`
``
859
`+
layout.align,
`
``
860
`+
ctx.target_pointer_size(),
`
``
861
`` +
"Target platform requires --no-size_t-is-usize
. The alignment of {}
({}) does not match the target pointer size ({})",
``
``
862
`+
spelling,
`
``
863
`+
layout.align,
`
``
864
`+
ctx.target_pointer_size(),
`
``
865
`+
);
`
``
866
`+
}
`
842
867
`return;
`
843
868
`}
`
844
869
``