From 11f0aedc3dbff825f1450de59d8f3dc3ae5efc25 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 7 Aug 2017 17:39:09 -0700 Subject: [PATCH] add some tests making sure we get the alias checking right --- tests/compile-fail/validation_aliasing_mut1.rs | 10 ++++++++++ tests/compile-fail/validation_aliasing_mut2.rs | 10 ++++++++++ tests/compile-fail/validation_aliasing_mut3.rs | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 tests/compile-fail/validation_aliasing_mut1.rs create mode 100644 tests/compile-fail/validation_aliasing_mut2.rs create mode 100644 tests/compile-fail/validation_aliasing_mut3.rs 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) }; +}