gccrs: Handle `async` functions in traits
[official-gcc.git] / gcc / testsuite / rust / compile / issue-1289.rs
blob9251d79290bbe4ddefa3b2be0ab577160b71ce3f
1 #![feature(intrinsics)]
3 #[lang = "sized"]
4 pub trait Sized {}
6 extern "C" {
7     fn printf(s: *const i8, ...);
10 mod intrinsics {
11     extern "rust-intrinsic" {
12         #[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
13         pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
14     }
17 #[lang = "mut_ptr"]
18 impl<T> *mut T {
19     pub const unsafe fn offset(self, count: isize) -> *mut T {
20         unsafe { intrinsics::offset(self, count) as *mut T }
21     }
23     pub const unsafe fn add(self, count: usize) -> Self {
24         unsafe { self.offset(count as isize) }
25     }
28 #[lang = "const_ptr"]
29 impl<T> *const T {
30     pub const unsafe fn offset(self, count: isize) -> *mut T {
31         unsafe { intrinsics::offset(self, count) as *mut T }
32     }
34     pub const unsafe fn add(self, count: usize) -> Self {
35         unsafe { self.offset(count as isize) }
36     }
39 fn main() -> i32 {
40     let a: *mut _ = &mut 123;
41     unsafe {
42         let _b = a.add(123);
43     }
45     0