// This should never be allowed -- `foo.a` and `foo.b` are
// overlapping, so since `x` is not `mut` we should not permit
// reassignment.

union Foo {
    a: u32,
    b: u32,
}

unsafe fn overlapping_fields() {
    let x: Foo;
    x.a = 1;  //~ ERROR
    x.b = 22; //~ ERROR
}

fn main() { }