3 // This tests checks that clashing_extern_declarations handles types that are recursive through a
4 // pointer or ref argument. See #75512.
8 mod raw_ptr_recursion {
12 pointy: *const Pointy,
16 fn run_pointy(pointy: Pointy);
22 pointy: *const Pointy,
26 fn run_pointy(pointy: Pointy);
31 mod raw_ptr_recursion_once_removed {
35 pointy_two: *const Pointy2,
40 pointy_one: *const Pointy1,
44 fn run_pointy2(pointy: Pointy2);
51 pointy_two: *const Pointy2,
56 pointy_one: *const Pointy1,
60 fn run_pointy2(pointy: Pointy2);
73 fn reffy_recursion(reffy: Reffy);
83 fn reffy_recursion(reffy: Reffy);
88 mod ref_recursion_once_removed {
92 reffy: &'a Reffy2<'a>,
96 reffy: &'a Reffy1<'a>,
100 #[allow(improper_ctypes)]
101 fn reffy_once_removed(reffy: Reffy1);
107 reffy: &'a Reffy2<'a>,
111 reffy: &'a Reffy1<'a>,
115 #[allow(improper_ctypes)]
116 fn reffy_once_removed(reffy: Reffy1);