diff options
Diffstat (limited to 'src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs')
-rw-r--r-- | src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs b/src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs new file mode 100644 index 000000000..adc7dfd54 --- /dev/null +++ b/src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs @@ -0,0 +1,20 @@ +// run-pass + +// Test file taken from issue 45129 (https://github.com/rust-lang/rust/issues/45129) + +struct Foo { x: [usize; 2] } + +static mut SFOO: Foo = Foo { x: [23, 32] }; + +impl Foo { + fn x(&mut self) -> &mut usize { &mut self.x[0] } +} + +fn main() { + unsafe { + let sfoo: *mut Foo = &mut SFOO; + let x = (*sfoo).x(); + (*sfoo).x[1] += 1; + *x += 1; + } +} |