| //@ compile-flags: --crate-type=lib |
| //@ aux-build: unsafe-fields-crate-dep.rs |
| |
| extern crate unsafe_fields_crate_dep; |
| |
| use unsafe_fields_crate_dep::WithUnsafeField; |
| |
| fn new_without_unsafe() -> WithUnsafeField { |
| WithUnsafeField { |
| //~^ ERROR |
| unsafe_field: 0, |
| safe_field: 0, |
| } |
| } |
| |
| fn operate_on_safe_field(s: &mut WithUnsafeField) { |
| s.safe_field = 2; |
| &s.safe_field; |
| s.safe_field; |
| } |
| |
| fn set_unsafe_field(s: &mut WithUnsafeField) { |
| unsafe { |
| s.unsafe_field = 2; |
| } |
| } |
| |
| fn read_unsafe_field(s: &WithUnsafeField) -> u32 { |
| unsafe { s.unsafe_field } |
| } |
| |
| fn ref_unsafe_field(s: &WithUnsafeField) -> &u32 { |
| unsafe { &s.unsafe_field } |
| } |
| |
| fn destructure(s: &WithUnsafeField) { |
| unsafe { |
| let WithUnsafeField { safe_field, unsafe_field } = s; |
| } |
| } |
| |
| fn set_unsafe_field_without_unsafe(s: &mut WithUnsafeField) { |
| s.unsafe_field = 2; |
| //~^ ERROR |
| } |
| |
| fn read_unsafe_field_without_unsafe(s: &WithUnsafeField) -> u32 { |
| s.unsafe_field |
| //~^ ERROR |
| } |
| |
| fn ref_unsafe_field_without_unsafe(s: &WithUnsafeField) -> &u32 { |
| &s.unsafe_field |
| //~^ ERROR |
| } |
| |
| fn destructure_without_unsafe(s: &WithUnsafeField) { |
| let WithUnsafeField { safe_field, unsafe_field } = s; |
| //~^ ERROR |
| |
| let WithUnsafeField { safe_field, .. } = s; |
| } |