1 // check-pass
2 
ret_i32_no_unsafe() -> i323 const unsafe fn ret_i32_no_unsafe() -> i32 { 42 }
ret_null_ptr_no_unsafe<T>() -> *const T4 const unsafe fn ret_null_ptr_no_unsafe<T>() -> *const T { std::ptr::null() }
ret_null_mut_ptr_no_unsafe<T>() -> *mut T5 const unsafe fn ret_null_mut_ptr_no_unsafe<T>() -> *mut T { std::ptr::null_mut() }
no_unsafe()6 const fn no_unsafe() { unsafe {} }
7 
call_unsafe_const_fn() -> i328 const fn call_unsafe_const_fn() -> i32 {
9     unsafe { ret_i32_no_unsafe() }
10 }
call_unsafe_generic_const_fn() -> *const String11 const fn call_unsafe_generic_const_fn() -> *const String {
12     unsafe { ret_null_ptr_no_unsafe::<String>() }
13 }
call_unsafe_generic_cell_const_fn() -> *const Vec<std::cell::Cell<u32>>14 const fn call_unsafe_generic_cell_const_fn()
15     -> *const Vec<std::cell::Cell<u32>>
16 {
17     unsafe { ret_null_mut_ptr_no_unsafe::<Vec<std::cell::Cell<u32>>>() }
18 }
19 
call_unsafe_const_unsafe_fn() -> i3220 const unsafe fn call_unsafe_const_unsafe_fn() -> i32 {
21     unsafe { ret_i32_no_unsafe() }
22 }
call_unsafe_generic_const_unsafe_fn() -> *const String23 const unsafe fn call_unsafe_generic_const_unsafe_fn() -> *const String {
24     unsafe { ret_null_ptr_no_unsafe::<String>() }
25 }
call_unsafe_generic_cell_const_unsafe_fn() -> *const Vec<std::cell::Cell<u32>>26 const unsafe fn call_unsafe_generic_cell_const_unsafe_fn()
27     -> *const Vec<std::cell::Cell<u32>>
28 {
29     unsafe { ret_null_mut_ptr_no_unsafe::<Vec<std::cell::Cell<u32>>>() }
30 }
31 
call_unsafe_const_unsafe_fn_immediate() -> i3232 const unsafe fn call_unsafe_const_unsafe_fn_immediate() -> i32 {
33     ret_i32_no_unsafe()
34 }
call_unsafe_generic_const_unsafe_fn_immediate() -> *const String35 const unsafe fn call_unsafe_generic_const_unsafe_fn_immediate() -> *const String {
36     ret_null_ptr_no_unsafe::<String>()
37 }
call_unsafe_generic_cell_const_unsafe_fn_immediate() -> *const Vec<std::cell::Cell<u32>>38 const unsafe fn call_unsafe_generic_cell_const_unsafe_fn_immediate()
39     -> *const Vec<std::cell::Cell<u32>>
40 {
41     ret_null_mut_ptr_no_unsafe::<Vec<std::cell::Cell<u32>>>()
42 }
43 
main()44 fn main() {}
45