summaryrefslogtreecommitdiffstats
path: root/src/test/ui/mir/mir-inlining/ice-issue-77564.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/mir/mir-inlining/ice-issue-77564.rs')
-rw-r--r--src/test/ui/mir/mir-inlining/ice-issue-77564.rs38
1 files changed, 0 insertions, 38 deletions
diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77564.rs b/src/test/ui/mir/mir-inlining/ice-issue-77564.rs
deleted file mode 100644
index 0d3fbfe5d..000000000
--- a/src/test/ui/mir/mir-inlining/ice-issue-77564.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// run-pass
-// compile-flags:-Zmir-opt-level=3
-
-use std::mem::MaybeUninit;
-const N: usize = 2;
-
-trait CollectArray<A>: Iterator<Item = A> {
- fn inner_array(&mut self) -> [A; N];
- fn collect_array(&mut self) -> [A; N] {
- let result = self.inner_array();
- assert!(self.next().is_none());
- result
- }
-}
-
-impl<A, I: ?Sized> CollectArray<A> for I
-where
- I: Iterator<Item = A>,
-{
- fn inner_array(&mut self) -> [A; N] {
- let mut result: [MaybeUninit<A>; N] = unsafe { MaybeUninit::uninit().assume_init() };
- for (dest, item) in result.iter_mut().zip(self) {
- *dest = MaybeUninit::new(item);
- }
- let temp_ptr: *const [MaybeUninit<A>; N] = &result;
- unsafe { std::ptr::read(temp_ptr as *const [A; N]) }
- }
-}
-
-fn main() {
- assert_eq!(
- [[1, 2], [3, 4]]
- .iter()
- .map(|row| row.iter().collect_array())
- .collect_array(),
- [[&1, &2], [&3, &4]]
- );
-}