diff options
| author | Alexis Bourget <alexis.bourget@gmail.com> | 2020-09-10 15:27:48 +0200 |
|---|---|---|
| committer | Alexis Bourget <alexis.bourget@gmail.com> | 2020-09-21 21:50:26 +0200 |
| commit | 8904921c1d6b3636f4352f9dd6d4875132b89998 (patch) | |
| tree | d12ce9e92bc433a13ad3ae012be9da4d9ca11082 | |
| parent | ac39debeba2b63a39a3833e2d7451f0b1f95b5f2 (diff) | |
| download | rust-8904921c1d6b3636f4352f9dd6d4875132b89998.tar.gz rust-8904921c1d6b3636f4352f9dd6d4875132b89998.zip | |
Move array cycle test
| -rw-r--r-- | library/core/tests/array.rs | 29 | ||||
| -rw-r--r-- | src/test/ui/array-slice-vec/arr_cycle.rs | 31 |
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(); -} |
