//@ run-pass | |
#![allow(non_snake_case)] | |
#[derive(Clone, Copy)] | |
#[repr(C)] | |
struct LARGE_INTEGER_U { | |
LowPart: u32, | |
HighPart: u32, | |
} | |
#[derive(Clone, Copy)] | |
#[repr(C)] | |
union LARGE_INTEGER { | |
__unnamed__: LARGE_INTEGER_U, | |
u: LARGE_INTEGER_U, | |
QuadPart: u64, | |
} | |
#[link(name = "rust_test_helpers", kind = "static")] | |
extern "C" { | |
fn increment_all_parts(_: LARGE_INTEGER) -> LARGE_INTEGER; | |
} | |
fn main() { | |
unsafe { | |
let mut li = LARGE_INTEGER { QuadPart: 0 }; | |
let li_c = increment_all_parts(li); | |
li.__unnamed__.LowPart += 1; | |
li.__unnamed__.HighPart += 1; | |
li.u.LowPart += 1; | |
li.u.HighPart += 1; | |
li.QuadPart += 1; | |
assert_eq!(li.QuadPart, li_c.QuadPart); | |
} | |
} |