| //@ run-pass | |
| union Foo { | |
| bar: i8, | |
| _blah: isize, | |
| _zst: (), | |
| } | |
| struct FooHolder { | |
| inner_foo: Foo | |
| } | |
| fn do_nothing(_x: &mut Foo) {} | |
| pub fn main() { | |
| let mut foo = Foo { bar: 5 }; | |
| do_nothing(&mut foo); | |
| foo.bar = 6; | |
| unsafe { foo.bar += 1; } | |
| assert_eq!(unsafe { foo.bar }, 7); | |
| unsafe { | |
| let Foo { bar: inner } = foo; | |
| assert_eq!(inner, 7); | |
| } | |
| let foo = Foo { bar: 5 }; | |
| let foo = if let 3 = if let true = true { 3 } else { 4 } { foo } else { foo }; | |
| let (_foo2, _random) = (foo, 42); | |
| let mut foo_holder = FooHolder { inner_foo: Foo { bar: 5 } }; | |
| foo_holder.inner_foo.bar = 4; | |
| assert_eq!(unsafe { foo_holder.inner_foo.bar }, 4); | |
| drop(foo_holder); | |
| } |