diff options
| author | Ralf Jung <post@ralfj.de> | 2023-08-05 13:23:12 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-08-06 21:25:49 +0200 |
| commit | b66b322a2aaecbcc5dd254c799393cbb702946fe (patch) | |
| tree | da5205e23d558a4e0505ddc2ce7ed50c361cc407 | |
| parent | bc720ad36b74c428b210c71c66e4490cec12b023 (diff) | |
| download | rust-b66b322a2aaecbcc5dd254c799393cbb702946fe.tar.gz rust-b66b322a2aaecbcc5dd254c799393cbb702946fe.zip | |
add testcase that hits valtree_into_mplace with a custom DST
| -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"); } |
