about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/issues/auxiliary/issue-73112.rs10
-rw-r--r--src/test/ui/issues/issue-73112.rs13
-rw-r--r--src/test/ui/issues/issue-73112.stderr20
3 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/issues/auxiliary/issue-73112.rs b/src/test/ui/issues/auxiliary/issue-73112.rs
new file mode 100644
index 00000000000..6210c29bbdc
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-73112.rs
@@ -0,0 +1,10 @@
+#[repr(transparent)]
+pub struct PageTableEntry {
+    entry: u64,
+}
+
+#[repr(align(4096))]
+#[repr(C)]
+pub struct PageTable {
+    entries: [PageTableEntry; 512],
+}
diff --git a/src/test/ui/issues/issue-73112.rs b/src/test/ui/issues/issue-73112.rs
new file mode 100644
index 00000000000..cc7be9c95ae
--- /dev/null
+++ b/src/test/ui/issues/issue-73112.rs
@@ -0,0 +1,13 @@
+// aux-build:issue-73112.rs
+
+extern crate issue_73112;
+
+fn main() {
+    use issue_73112::PageTable;
+
+    #[repr(C, packed)]
+    struct SomeStruct {
+    //~^ ERROR packed type cannot transitively contain a `#[repr(align)]` type [E0588]
+        page_table: PageTable,
+    }
+}
diff --git a/src/test/ui/issues/issue-73112.stderr b/src/test/ui/issues/issue-73112.stderr
new file mode 100644
index 00000000000..5a548378c26
--- /dev/null
+++ b/src/test/ui/issues/issue-73112.stderr
@@ -0,0 +1,20 @@
+error[E0588]: packed type cannot transitively contain a `#[repr(align)]` type
+  --> $DIR/issue-73112.rs:9:5
+   |
+LL | /     struct SomeStruct {
+LL | |
+LL | |         page_table: PageTable,
+LL | |     }
+   | |_____^
+   |
+note: `PageTable` has a `#[repr(align)]` attribute
+  --> $DIR/auxiliary/issue-73112.rs:8:1
+   |
+LL | / pub struct PageTable {
+LL | |     entries: [PageTableEntry; 512],
+LL | | }
+   | |_^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0588`.