Skip to content

intra-doc-resolution fails to link in re-exported types that don't match original module structure #60883

Closed
@Nemo157

Description

@Nemo157

Given a base crate

// bar/src/lib.rs
pub trait Foo {
    /// [`Bar`] [`Baz`]
    fn foo();
}

pub trait Bar {
}

pub trait Baz {
}

and a crate that uses that and re-exports types from it in a different structure

// foo/src/lib.rs
pub mod bar {
    pub use ::bar::Bar;
}

pub use ::bar::{Foo, Baz};

The links in the re-exported types only work when the module structure matches between the two crates (in this case for Baz but not for Bar)

Screenshot 2019-05-16 at 18 15 49

Rustdoc correctly warns that it can't resolve the link, but this seems like a primary usecase of the feature to allow facade crates to have correctly linked docs when they rearrange types from underlying crates.

warning: `[Bar]` cannot be resolved, ignoring it...
 --> /private/var/folders/0p/5yvmrvhj5w3_vy1y8x7dvk7m0000gn/T/tmp.lUuznfwf/foo/bar/src/lib.rs:2:10
  |
2 |     /// [`Bar`] [`Baz`]
  |          ^^^^^ cannot be resolved, ignoring
  |

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-intra-doc-linksArea: Intra-doc links, the ability to link to items in docs by nameT-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions