rust-lang/rust

libc fails to migrate

Closed this issue · 3 comments

@teiesti helpfully reported that libc fails to migrate successfully:

branch here

$ cargo +nightly build
   Compiling libc v0.2.41 (file:///home/tobias/dev/libc)
error[E0463]: can't find crate for `dox`
   --> src/macros.rs:44:16
    |
44  |           impl ::dox::Copy for $i {}
    |                  ^^^ can't find crate
    | 
   ::: src/unix/mod.rs:19:1
    |
19  | / s! {
20  | |     pub struct group {
21  | |         pub gr_name: *mut crate::c_char,
22  | |         pub gr_passwd: *mut crate::c_char,
...   |
186 | |     }
187 | | }
    | |_- in this macro invocation

error: aborting due to previous error

Milestoned for preview 2, needs to be diagnosed/checked. Not critical to fix by then; fix by RC.

Ok running this locally it looks like there's two separate bugs here.

  • First is that cargo fix isn't yet handling exact duplicate fixes (aka two lint suggestions for the same suggestion for the exact same span of code). This is the same bug as rust-lang/cargo#5785 and is being fixed in #52720
  • Second is that we don't handle generics well, for example ::foo<::Bar> gets overlapping suggestions, one for the whole path and one for the generic parameter. This was also reported as rust-lang/cargo#5797 and reported a standalone issue for this at #52754. Otherwise this can also be tracked in Cargo with rust-lang/cargo#5813 which has some thoughts about how to make progress.

With all that I think this is pretty well in hand, so closing.