diff options
| author | bors <bors@rust-lang.org> | 2023-08-08 07:48:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-08 07:48:01 +0000 |
| commit | 6d55184d05c9bd3c46b294dcad3bfb1d0907e871 (patch) | |
| tree | 6fbd729b6652b060c76ee0606f6180d4f5e0cae0 /tests | |
| parent | 6742e2b18502afa9d27b0e02d0cfa36aa93aa2ee (diff) | |
| parent | 997ec63fb1183d062501946f4d7493491a0847e7 (diff) | |
| download | rust-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.rs | 21 |
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"); } |
