about summary refs log tree commit diff
path: root/src/liballoc/tests
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2019-10-16 20:33:55 +0200
committerSimon Sapin <simon.sapin@exyr.org>2019-10-18 23:57:22 +0200
commit227db40a98e5bd903aa3658c16f19a3d6f694deb (patch)
treee8a9a90c01e5595cfb97db7ad5aa88dc2d925435 /src/liballoc/tests
parentca1cfdab78d1966efd492cd550a3684f3b95527c (diff)
downloadrust-227db40a98e5bd903aa3658c16f19a3d6f694deb.tar.gz
rust-227db40a98e5bd903aa3658c16f19a3d6f694deb.zip
Uninitialized boxes: add test for zero-size allocations
Diffstat (limited to 'src/liballoc/tests')
-rw-r--r--src/liballoc/tests/boxed.rs18
-rw-r--r--src/liballoc/tests/lib.rs2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/liballoc/tests/boxed.rs b/src/liballoc/tests/boxed.rs
new file mode 100644
index 00000000000..bc3d53bf30d
--- /dev/null
+++ b/src/liballoc/tests/boxed.rs
@@ -0,0 +1,18 @@
+use std::ptr::NonNull;
+use std::mem::MaybeUninit;
+
+#[test]
+fn unitialized_zero_size_box() {
+    assert_eq!(
+        &*Box::<()>::new_uninit() as *const _,
+        NonNull::<MaybeUninit<()>>::dangling().as_ptr(),
+    );
+    assert_eq!(
+        Box::<[()]>::new_uninit_slice(4).as_ptr(),
+        NonNull::<MaybeUninit<()>>::dangling().as_ptr(),
+    );
+    assert_eq!(
+        Box::<[String]>::new_uninit_slice(0).as_ptr(),
+        NonNull::<MaybeUninit<String>>::dangling().as_ptr(),
+    );
+}
diff --git a/src/liballoc/tests/lib.rs b/src/liballoc/tests/lib.rs
index 5723a30c0f3..59f5c8dfb8a 100644
--- a/src/liballoc/tests/lib.rs
+++ b/src/liballoc/tests/lib.rs
@@ -2,6 +2,7 @@
 #![feature(box_syntax)]
 #![feature(drain_filter)]
 #![feature(exact_size_is_empty)]
+#![feature(new_uninit)]
 #![feature(option_flattening)]
 #![feature(pattern)]
 #![feature(repeat_generic_slice)]
@@ -15,6 +16,7 @@ use std::collections::hash_map::DefaultHasher;
 
 mod arc;
 mod binary_heap;
+mod boxed;
 mod btree;
 mod cow_str;
 mod fmt;