diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-08-07 00:06:06 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-07 00:06:06 +0200 |
| commit | d720f93a62889dd956ad4efaf42e73075a3f06ac (patch) | |
| tree | 127ab07ce38e4cb2ba2a26163955f3b0f02c7411 /tests | |
| parent | 74dce186392f1cf6e2af34c06be916ea5c859bea (diff) | |
| parent | 0c595440e36500630a92edbf421ce5f7706704e3 (diff) | |
| download | rust-d720f93a62889dd956ad4efaf42e73075a3f06ac.tar.gz rust-d720f93a62889dd956ad4efaf42e73075a3f06ac.zip | |
Rollup merge of #114543 - RalfJung:test-96944, r=compiler-errors
add tests for some fixed ConstProp ICEs Fixes https://github.com/rust-lang/rust/issues/96944 Fixes https://github.com/rust-lang/rust/issues/111353
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/const_prop/ice-issue-111353.rs | 7 | ||||
| -rw-r--r-- | tests/ui/const_prop/ice-issue-96944.rs | 26 |
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui/const_prop/ice-issue-111353.rs b/tests/ui/const_prop/ice-issue-111353.rs new file mode 100644 index 00000000000..99d1b792fea --- /dev/null +++ b/tests/ui/const_prop/ice-issue-111353.rs @@ -0,0 +1,7 @@ +// build-pass +#![crate_type = "lib"] +#![feature(unsized_fn_params)] + +pub fn f(mut x: [i32]) { + x[0] = 1; +} diff --git a/tests/ui/const_prop/ice-issue-96944.rs b/tests/ui/const_prop/ice-issue-96944.rs new file mode 100644 index 00000000000..74baffddd8b --- /dev/null +++ b/tests/ui/const_prop/ice-issue-96944.rs @@ -0,0 +1,26 @@ +// build-pass +#![crate_type = "lib"] +#![allow(arithmetic_overflow)] + +pub trait BitSplit { + type Half; + fn merge(halves: [Self::Half; 2]) -> Self; +} + +macro_rules! impl_ints { + ($int:ty => $half:ty; $mask:expr) => { + impl BitSplit for $int { + type Half = $half; + #[inline] + fn merge(halves: [Self::Half; 2]) -> Self { + const HALF_SIZE: usize = std::mem::size_of::<$half>() * 8; + (halves[0] << HALF_SIZE) as $int | halves[1] as $int + } + } + }; +} + +impl_ints!(u128 => u64; 0x0000_0000_0000_0000_FFFF_FFFF_FFFF_FFFF); +impl_ints!( u64 => u32; 0x0000_0000_FFFF_FFFF); +impl_ints!( u32 => u16; 0x0000_FFFF); +impl_ints!( u16 => u8; 0x00FF); |
