diff --git a/tests/compile-fail/validation_aliasing_mut1.rs b/tests/compile-fail/validation_aliasing_mut1.rs new file mode 100644 index 00000000000..86aa57447fe --- /dev/null +++ b/tests/compile-fail/validation_aliasing_mut1.rs @@ -0,0 +1,10 @@ +#![allow(unused_variables)] + +mod safe { + pub fn safe(x: &mut i32, y: &mut i32) {} //~ ERROR: in conflict with lock WriteLock +} + +fn main() { + let x = &mut 0 as *mut _; + unsafe { safe::safe(&mut *x, &mut *x) }; +} diff --git a/tests/compile-fail/validation_aliasing_mut2.rs b/tests/compile-fail/validation_aliasing_mut2.rs new file mode 100644 index 00000000000..ed7497e5e54 --- /dev/null +++ b/tests/compile-fail/validation_aliasing_mut2.rs @@ -0,0 +1,10 @@ +#![allow(unused_variables)] + +mod safe { + pub fn safe(x: &i32, y: &mut i32) {} //~ ERROR: in conflict with lock ReadLock +} + +fn main() { + let x = &mut 0 as *mut _; + unsafe { safe::safe(&*x, &mut *x) }; +} diff --git a/tests/compile-fail/validation_aliasing_mut3.rs b/tests/compile-fail/validation_aliasing_mut3.rs new file mode 100644 index 00000000000..69fbbc167ca --- /dev/null +++ b/tests/compile-fail/validation_aliasing_mut3.rs @@ -0,0 +1,10 @@ +#![allow(unused_variables)] + +mod safe { + pub fn safe(x: &mut i32, y: &i32) {} //~ ERROR: in conflict with lock WriteLock +} + +fn main() { + let x = &mut 0 as *mut _; + unsafe { safe::safe(&mut *x, &*x) }; +}