Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustdoc: load the set of in-scope traits for modules with no docstring #93441

Merged

Conversation

notriddle
Copy link
Contributor

@notriddle notriddle commented Jan 28, 2022

Fixes #93428

This fix is a response to a couple of special cases related to the module_id, which is eventually used for trait candidates:

  • The module id is always set to the current crate, when checking crate::.

    Normally, the set of in-scope traits would be set in load_links_in_attrs, but if there are no doc comments, then that loop will never run.

  • the module id is set to the parent module, when resolving a module that is spelled like this:

    // Notice how we use an outlined doc comment here!
    // [`Test::my_fn`]
    mod something {
    }
    

    As with the above problem with crate::, we need to make sure the module gets its traits in scope resolved, even if it has no doc comments of its own.

Fixes rust-lang#93428

This fix is a response to a couple of special cases related to the
`module_id`, which is eventually used for trait candidates:

  * The module id is always set to the current crate, when checking `crate::`.

    Normally, the set of in-scope traits would be set in `load_links_in_attrs`,
    but if there are no doc comments, then that loop will never run.

  * the module id is set to the parent module, when resolving a module
    that is spelled like this:

        // Notice how we use an outlined doc comment here!
        // [`Test::my_fn`]
        mod something {
        }

    As with the above problem with `crate::`, we need to make sure the
    module gets its traits in scope resolved, even if it has no doc comments
    of its own.
@rustbot rustbot added the T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. label Jan 28, 2022
@rust-highfive
Copy link
Collaborator

r? @GuillaumeGomez

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 28, 2022
@notriddle notriddle force-pushed the notriddle/collect-crate-doc-links-very-early branch from ab97bb0 to 3903ca1 Compare January 28, 2022 19:24
@camelid
Copy link
Member

camelid commented Jan 28, 2022

cc @petrochenkov

@GuillaumeGomez
Copy link
Member

r? @petrochenkov

@petrochenkov
Copy link
Contributor

Thanks!
@bors r+

Could you also check whether it fixes the regression from #88679 (comment)?
Probably not since in that case rustdoc seems to resolve something from a dependency crate.

@bors
Copy link
Contributor

bors commented Jan 29, 2022

📌 Commit 3903ca1 has been approved by petrochenkov

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 29, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 30, 2022
…askrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#93256 (Make `join!` description more accurate)
 - rust-lang#93358 (Add note suggesting that predicate may be satisfied, but is not `const`)
 - rust-lang#93362 (Do not register infer var for GAT projection in RPIT)
 - rust-lang#93391 (rustdoc: remove tooltip from source link)
 - rust-lang#93414 (Move unstable is_{arch}_feature_detected! macros to std::arch)
 - rust-lang#93441 (rustdoc: load the set of in-scope traits for modules with no docstring)
 - rust-lang#93459 (fs: Don't copy d_name from struct dirent)
 - rust-lang#93463 (Rename _args -> args in format_args expansion)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 605ffd6 into rust-lang:master Jan 30, 2022
@rustbot rustbot added this to the 1.60.0 milestone Jan 30, 2022
@notriddle notriddle deleted the notriddle/collect-crate-doc-links-very-early branch January 31, 2022 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

rustdoc panics when resolving intra doc link
7 participants