about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/compile-fail/validation_aliasing_mut1.rs10
-rw-r--r--tests/compile-fail/validation_aliasing_mut2.rs10
-rw-r--r--tests/compile-fail/validation_aliasing_mut3.rs10
3 files changed, 30 insertions, 0 deletions
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) };
+}