rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.96k stars 12.69k forks source link

[1.30 beta] Unresolved import errors in a few crates #54471

Closed pietroalbini closed 6 years ago

pietroalbini commented 6 years ago

Some crates are failing in 1.30 beta with errors like this one:

 error[E0432]: unresolved import `geometry::Isometry`
   --> /cargo-home/registry/src/github.com-1ecc6299db9ec823/nalgebra-0.15.3/src/base/cg.rs:15:16
    |
 15 | use geometry::{Isometry, IsometryMatrix3, Orthographic3, Perspective3, Point, Point3, Rotation2,
    |                ^^^^^^^^ no `Isometry` in `geometry`. Did you mean to use `isometry`?

cc @petrochenkov

petrochenkov commented 6 years ago

The root issue is in the nalgebra crate and it's something that was fixed between nalgebra 0.16.0 and nalgebra 0.16.1.

EDIT: nalgebra 0.16.1 removed use serde; imports, almost certainly as a response to this regression.

icefoxen commented 6 years ago

The ipfs-api crate does not use nlagebra at all. All of these build logs seem to have something wrong with serde involved; for example, ipfs-api gets a lot of errors associated with its use of #[serde(rename_all = "PascalCase")], along the lines of:


Sep 21 17:09:54.166 INFO kablam! error: cannot determine resolution for the attribute macro `serde`
Sep 21 17:09:54.166 INFO kablam!   --> /cargo-home/registry/src/github.com-1ecc6299db9ec823/nalgebra-0.15.3/src/linalg/symmetric_tridiagonal.rs:16:5
Sep 21 17:09:54.166 INFO kablam!    |
Sep 21 17:09:54.166 INFO kablam! 16 |     serde(
Sep 21 17:09:54.166 INFO kablam!    |     ^^^^^
Sep 21 17:09:54.166 INFO kablam!    |
Sep 21 17:09:54.166 INFO kablam!    = note: import resolution is stuck, try simplifying macro imports

All the other build logs appear to have "undefined type or module" along with the error import resolution is stuck, try simplifying macro imports. Removing the serde annotations from ipfs-api lets it build successfully, though the protocol it speaks is then incorrect.

petrochenkov commented 6 years ago

Yes, ipfs-api is a separate case (probably with the same underlying issue in rustc) and it's already tracked separately in https://github.com/rust-lang/rust/issues/54386, the other regressed crates use nalgebra.

icefoxen commented 6 years ago

Aha, thanks!

petrochenkov commented 6 years ago

Minimized:

#![allow(unused)]

#[macro_use]
extern crate serde_derive;

use self::one::*;
use self::two::*;

mod serde {}

mod one {
    use serde;

    #[derive(Serialize)]
    #[serde]
    struct One;
}

mod two {
    use serde;

    #[derive(Serialize)]
    #[serde]
    struct Two;
}

fn main() {}
petrochenkov commented 6 years ago

Fixed in https://github.com/rust-lang/rust/pull/54518 All the crates listed in https://github.com/rust-lang/rust/issues/54471#issue-362858527 build successfully now.