immunant / c2rust

Migrate C code to Rust
https://c2rust.com/
Other
3.81k stars 220 forks source link

analyze: rewriter adds hypothetical lifetime args to mentions of non-rewritten structs #994

Closed spernsteiner closed 11 months ago

spernsteiner commented 1 year ago
extern "C" {
    fn epoll_wait(events: *mut epoll_event);
}

pub struct fdevents {
    pub epoll_events: *mut epoll_event,
}

pub struct epoll_event {
    pub ptr: *mut u8,
}

Rewritten output:

extern "C" {
    fn epoll_wait(events: *mut epoll_event);
}

pub struct fdevents<'h4,'h5> {
    pub epoll_events: &'h4 (epoll_event<'h5>),
}

pub struct epoll_event {
    pub ptr: *mut u8,
}

struct epoll_event can't be rewritten, since it's exposed to FFI via fn epoll_wait. But the field type in fdevents is rewritten as if a lifetime parameter was added to epoll_event.

kkysen commented 1 year ago

struct epoll_event's fields are marked FIXED as per #960, right? This just needs to skip adding hypothetical lifetimes to FIXED fields/types, rights?

spernsteiner commented 1 year ago

Yes, something like that