about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorВалерий Лашманов <vflashm@gmail.com>2016-03-31 10:11:59 -0400
committerВалерий Лашманов <vflashm@gmail.com>2016-03-31 10:11:59 -0400
commit33db2d65ffd5b988fdedc8ed91b395abaa57f777 (patch)
tree5327b837607866485c43669a0667668598e0ef23 /src/libcoretest
parent102a5be7126ef8f1e79086b98d1d9faf47ba8ece (diff)
downloadrust-33db2d65ffd5b988fdedc8ed91b395abaa57f777.tar.gz
rust-33db2d65ffd5b988fdedc8ed91b395abaa57f777.zip
added missing refcell ref/refmut coercions to unsized
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/cell.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libcoretest/cell.rs b/src/libcoretest/cell.rs
index cafffb5266f..c0b22274ee9 100644
--- a/src/libcoretest/cell.rs
+++ b/src/libcoretest/cell.rs
@@ -261,3 +261,23 @@ fn refcell_unsized() {
     let comp: &mut [i32] = &mut [4, 2, 5];
     assert_eq!(&*cell.borrow(), comp);
 }
+
+#[test]
+fn refcell_ref_coercion() {
+    let cell: RefCell<[i32; 3]> = RefCell::new([1, 2, 3]);
+    {
+        let mut cellref: RefMut<[i32; 3]> = cell.borrow_mut();
+        cellref[0] = 4;
+        let mut coerced: RefMut<[i32]> = cellref;
+        coerced[2] = 5;
+    }
+    {
+        let comp: &mut [i32] = &mut [4, 2, 5];
+        let cellref: Ref<[i32; 3]> = cell.borrow();
+        assert_eq!(&*cellref, comp);
+        let coerced: Ref<[i32]> = cellref;
+        assert_eq!(&*coerced, comp);
+    }
+}
+
+