about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-08-08 07:48:01 +0000
committerbors <bors@rust-lang.org>2023-08-08 07:48:01 +0000
commit6d55184d05c9bd3c46b294dcad3bfb1d0907e871 (patch)
tree6fbd729b6652b060c76ee0606f6180d4f5e0cae0 /tests
parent6742e2b18502afa9d27b0e02d0cfa36aa93aa2ee (diff)
parent997ec63fb1183d062501946f4d7493491a0847e7 (diff)
downloadrust-6d55184d05c9bd3c46b294dcad3bfb1d0907e871.tar.gz
rust-6d55184d05c9bd3c46b294dcad3bfb1d0907e871.zip
Auto merge of #114520 - RalfJung:unsized-valtrees, r=oli-obk
simplify handling of valtrees for unsized types
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/const-generics/slice-const-param.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/ui/const-generics/slice-const-param.rs b/tests/ui/const-generics/slice-const-param.rs
index 05d21e08d74..90c573ab365 100644
--- a/tests/ui/const-generics/slice-const-param.rs
+++ b/tests/ui/const-generics/slice-const-param.rs
@@ -11,9 +11,30 @@ pub fn function_with_bytes<const BYTES: &'static [u8]>() -> &'static [u8] {
     BYTES
 }
 
+// Also check the codepaths for custom DST
+#[derive(PartialEq, Eq)]
+struct MyStr(str);
+impl std::marker::ConstParamTy for MyStr {}
+
+fn function_with_my_str<const S: &'static MyStr>() -> &'static MyStr {
+    S
+}
+
+impl MyStr {
+    const fn new(s: &'static str) -> &'static MyStr {
+        unsafe { std::mem::transmute(s) }
+    }
+
+    fn as_str(&self) -> &str {
+        &self.0
+    }
+}
+
 pub fn main() {
     assert_eq!(function_with_str::<"Rust">(), "Rust");
     assert_eq!(function_with_str::<"ℇ㇈↦">(), "ℇ㇈↦");
     assert_eq!(function_with_bytes::<b"AAAA">(), &[0x41, 0x41, 0x41, 0x41]);
     assert_eq!(function_with_bytes::<{&[0x41, 0x41, 0x41, 0x41]}>(), b"AAAA");
+
+    assert_eq!(function_with_my_str::<{ MyStr::new("hello") }>().as_str(), "hello");
 }