Skip to content

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

New issue

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

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

Already on GitHub? # to your account

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
Contributor

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
Collaborator

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
# for free to join this conversation on GitHub. Already have an account? # 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