about summary refs log tree commit diff
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2024-05-27 14:45:45 -0700
committerScott McMurray <scottmcm@users.noreply.github.com>2024-05-28 09:28:51 -0700
commit57948c84ecf654bdbf29adcee095e7e10b1c0640 (patch)
tree0e8c7ea0552c18d13fc9b7f0c2ec60d633695c57
parent5a8c1f372a009f11f7bfd0319dc1293ed40b5f22 (diff)
Add Miri smoke pass test for ptr_metadata intrinsic
-rw-r--r--src/tools/miri/tests/pass/intrinsics/intrinsics.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/tools/miri/tests/pass/intrinsics/intrinsics.rs b/src/tools/miri/tests/pass/intrinsics/intrinsics.rs
index 0dda5aadce2..89289a25d50 100644
--- a/src/tools/miri/tests/pass/intrinsics/intrinsics.rs
+++ b/src/tools/miri/tests/pass/intrinsics/intrinsics.rs
@@ -1,5 +1,5 @@
 //@compile-flags: -Zmiri-permissive-provenance
-#![feature(core_intrinsics, layout_for_ptr)]
+#![feature(core_intrinsics, layout_for_ptr, ptr_metadata)]
 //! Tests for various intrinsics that do not fit anywhere else.
 
 use std::intrinsics;
@@ -57,4 +57,10 @@ fn main() {
     // Make sure that even if the discriminant is stored together with data, the intrinsic returns
     // only the discriminant, nothing about the data.
     assert_eq!(discriminant(&Some(false)), discriminant(&Some(true)));
+
+    let () = intrinsics::ptr_metadata(&[1, 2, 3]);
+    let len = intrinsics::ptr_metadata(&[1, 2, 3][..]);
+    assert_eq!(len, 3);
+    let dyn_meta = intrinsics::ptr_metadata(&[1, 2, 3] as &dyn std::fmt::Debug);
+    assert_eq!(dyn_meta.size_of(), 12);
 }