1 // run-pass
2 
3 #![allow(dead_code)]
4 // Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same
5 
6 // pretty-expanded FIXME #23616
7 
8 use std::ptr;
9 
main()10 pub fn main() {
11     let mut test = TestDescAndFn {
12         desc: TestDesc {
13             name: TestName::DynTestName("test".to_string()),
14             should_fail: false
15         },
16         testfn: TestFn::DynTestFn(22),
17     };
18     do_swap(&mut test);
19 }
20 
do_swap(test: &mut TestDescAndFn)21 fn do_swap(test: &mut TestDescAndFn) {
22     unsafe {
23         ptr::swap(test, test);
24     }
25 }
26 
27 pub enum TestName {
28     DynTestName(String)
29 }
30 
31 pub enum TestFn {
32     DynTestFn(isize),
33     DynBenchFn(isize),
34 }
35 
36 pub struct TestDesc {
37     name: TestName,
38     should_fail: bool
39 }
40 
41 pub struct TestDescAndFn {
42     desc: TestDesc,
43     testfn: TestFn,
44 }
45