mod m {
    pub union U {
        pub a: u8,
        pub(super) b: u8,
        c: u8,
    }
}

fn main() { unsafe {
    let u = m::U { a: 0 }; // OK
    let u = m::U { b: 0 }; // OK
    let u = m::U { c: 0 }; //~ ERROR field `c` of union `U` is private

    let m::U { a } = u; // OK
    let m::U { b } = u; // OK
    let m::U { c } = u; //~ ERROR field `c` of union `U` is private
}}
