diff options
Diffstat (limited to 'src/test/mir-opt/simplify_try_if_let.rs')
-rw-r--r-- | src/test/mir-opt/simplify_try_if_let.rs | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/test/mir-opt/simplify_try_if_let.rs b/src/test/mir-opt/simplify_try_if_let.rs deleted file mode 100644 index fba67de40..000000000 --- a/src/test/mir-opt/simplify_try_if_let.rs +++ /dev/null @@ -1,43 +0,0 @@ -// compile-flags: -Zmir-opt-level=1 -Zunsound-mir-opts -// ignore-test -// FIXME: the pass is unsound and causes ICEs in the MIR validator - -// EMIT_MIR simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff - -use std::ptr::NonNull; - -pub struct LinkedList { - head: Option<NonNull<Node>>, - tail: Option<NonNull<Node>>, -} - -pub struct Node { - next: Option<NonNull<Node>>, -} - -impl LinkedList { - pub fn new() -> Self { - Self { head: None, tail: None } - } - - pub fn append(&mut self, other: &mut Self) { - match self.tail { - None => {} - Some(mut tail) => { - // `as_mut` is okay here because we have exclusive access to the entirety - // of both lists. - if let Some(other_head) = other.head.take() { - unsafe { - tail.as_mut().next = Some(other_head); - } - } - } - } - } -} - -fn main() { - let mut one = LinkedList::new(); - let mut two = LinkedList::new(); - one.append(&mut two); -} |