ir: Handle NonZero and simplify Option<NonZero> like we simplify Option<NonNull>.

Fixes #646
This commit is contained in:
Emilio Cobos Álvarez
2021-01-14 21:45:31 +01:00
parent f922f68531
commit c47ee1516b
12 changed files with 541 additions and 1 deletions
+30
View File
@@ -0,0 +1,30 @@
use std::num::*;
#[repr(C)]
pub struct NonZeroTest {
pub a: NonZeroU8,
pub b: NonZeroU16,
pub c: NonZeroU32,
pub d: NonZeroU64,
pub e: NonZeroI8,
pub f: NonZeroI16,
pub g: NonZeroI32,
pub h: NonZeroI64,
pub i: Option<NonZeroI64>,
pub j: *const Option<Option<NonZeroI64>>,
}
#[no_mangle]
pub extern "C" fn root(
test: NonZeroTest,
a: NonZeroU8,
b: NonZeroU16,
c: NonZeroU32,
d: NonZeroU64,
e: NonZeroI8,
f: NonZeroI16,
g: NonZeroI32,
h: NonZeroI64,
i: Option<NonZeroI64>,
j: *const Option<Option<NonZeroI64>>,
) {}
+13
View File
@@ -0,0 +1,13 @@
header = """
#if 0
''' '
#endif
#ifdef __cplusplus
struct NonZeroI64;
#endif
#if 0
' '''
#endif
"""