about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorErik Desjardins <erikdesjardins@users.noreply.github.com>2020-08-16 20:38:57 -0400
committerErik Desjardins <erikdesjardins@users.noreply.github.com>2020-08-30 14:58:03 -0400
commite9bc3ddb073f2261ac46832d985efe8db863ed6a (patch)
tree7a7281a8915f870e16bbc865daedfb0a7dbe81c4 /src
parente5d85f917b8965a5e62513c17cbb887366b152bc (diff)
test that we do not change the offset of ZST tuple fields when unsizing
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs b/src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs
new file mode 100644
index 00000000000..b0cefe77039
--- /dev/null
+++ b/src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs
@@ -0,0 +1,22 @@
+// run-pass
+
+#![feature(unsized_tuple_coercion)]
+
+// Check that we do not change the offsets of ZST fields when unsizing
+
+fn scalar_layout() {
+    let sized: &(u8, [(); 13]) = &(123, [(); 13]);
+    let unsize: &(u8, [()]) = sized;
+    assert_eq!(sized.1.as_ptr(), unsize.1.as_ptr());
+}
+
+fn scalarpair_layout() {
+    let sized: &(u8, u16, [(); 13]) = &(123, 456, [(); 13]);
+    let unsize: &(u8, u16, [()]) = sized;
+    assert_eq!(sized.2.as_ptr(), unsize.2.as_ptr());
+}
+
+pub fn main() {
+    scalar_layout();
+    scalarpair_layout();
+}