about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexis Bourget <alexis.bourget@gmail.com>2020-09-10 15:27:48 +0200
committerAlexis Bourget <alexis.bourget@gmail.com>2020-09-21 21:50:26 +0200
commit8904921c1d6b3636f4352f9dd6d4875132b89998 (patch)
treed12ce9e92bc433a13ad3ae012be9da4d9ca11082
parentac39debeba2b63a39a3833e2d7451f0b1f95b5f2 (diff)
downloadrust-8904921c1d6b3636f4352f9dd6d4875132b89998.tar.gz
rust-8904921c1d6b3636f4352f9dd6d4875132b89998.zip
Move array cycle test
-rw-r--r--library/core/tests/array.rs29
-rw-r--r--src/test/ui/array-slice-vec/arr_cycle.rs31
2 files changed, 29 insertions, 31 deletions
diff --git a/library/core/tests/array.rs b/library/core/tests/array.rs
index 5aba1a5d958..da496ad7bcd 100644
--- a/library/core/tests/array.rs
+++ b/library/core/tests/array.rs
@@ -330,3 +330,32 @@ fn array_map_drop_safety() {
     assert_eq!(DROPPED.load(Ordering::SeqCst), num_to_create);
     panic!("test succeeded")
 }
+
+#[test]
+fn cell_allows_array_cycle() {
+    use core::cell::Cell;
+
+    #[derive(Debug)]
+    struct B<'a> {
+        a: [Cell<Option<&'a B<'a>>>; 2],
+    }
+
+    impl<'a> B<'a> {
+        fn new() -> B<'a> {
+            B { a: [Cell::new(None), Cell::new(None)] }
+        }
+    }
+
+    let b1 = B::new();
+    let b2 = B::new();
+    let b3 = B::new();
+
+    b1.a[0].set(Some(&b2));
+    b1.a[1].set(Some(&b3));
+
+    b2.a[0].set(Some(&b2));
+    b2.a[1].set(Some(&b3));
+
+    b3.a[0].set(Some(&b1));
+    b3.a[1].set(Some(&b2));
+}
diff --git a/src/test/ui/array-slice-vec/arr_cycle.rs b/src/test/ui/array-slice-vec/arr_cycle.rs
deleted file mode 100644
index c262b5a1ff0..00000000000
--- a/src/test/ui/array-slice-vec/arr_cycle.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-// run-pass
-
-use std::cell::Cell;
-
-#[derive(Debug)]
-struct B<'a> {
-    a: [Cell<Option<&'a B<'a>>>; 2]
-}
-
-impl<'a> B<'a> {
-    fn new() -> B<'a> {
-        B { a: [Cell::new(None), Cell::new(None)] }
-    }
-}
-
-fn f() {
-    let (b1, b2, b3);
-    b1 = B::new();
-    b2 = B::new();
-    b3 = B::new();
-    b1.a[0].set(Some(&b2));
-    b1.a[1].set(Some(&b3));
-    b2.a[0].set(Some(&b2));
-    b2.a[1].set(Some(&b3));
-    b3.a[0].set(Some(&b1));
-    b3.a[1].set(Some(&b2));
-}
-
-fn main() {
-    f();
-}