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

``