summaryrefslogtreecommitdiffstats
path: root/tests/ui/layout/issue-112048-unsizing-niche.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
commit837b550238aa671a591ccf282dddeab29cadb206 (patch)
tree914b6b8862bace72bd3245ca184d374b08d8a672 /tests/ui/layout/issue-112048-unsizing-niche.rs
parentAdding debian version 1.70.0+dfsg2-1. (diff)
downloadrustc-837b550238aa671a591ccf282dddeab29cadb206.tar.xz
rustc-837b550238aa671a591ccf282dddeab29cadb206.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/layout/issue-112048-unsizing-niche.rs')
-rw-r--r--tests/ui/layout/issue-112048-unsizing-niche.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/layout/issue-112048-unsizing-niche.rs b/tests/ui/layout/issue-112048-unsizing-niche.rs
new file mode 100644
index 000000000..23588ba36
--- /dev/null
+++ b/tests/ui/layout/issue-112048-unsizing-niche.rs
@@ -0,0 +1,30 @@
+// run-pass
+
+// Check that unsizing does not change which field is considered for niche layout.
+
+#![feature(offset_of)]
+#![allow(dead_code)]
+
+#[derive(Clone)]
+struct WideptrField<T: ?Sized> {
+ first: usize,
+ second: usize,
+ niche: NicheAtEnd,
+ tail: T,
+}
+
+#[derive(Clone)]
+#[repr(C)]
+struct NicheAtEnd {
+ arr: [u8; 7],
+ b: bool,
+}
+
+type Tail = [bool; 8];
+
+fn main() {
+ assert_eq!(
+ core::mem::offset_of!(WideptrField<Tail>, niche),
+ core::mem::offset_of!(WideptrField<dyn Send>, niche)
+ );
+}