-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Regression in rustdoc of re-export involving namespace overlap #105735
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
Comments
In short, rustdoc middle-end is not written well, nothing is obvious in it, and changes that are easy and predictable in rustc may lead to entirely unpredictable consequences in rustdoc. |
Mentioning @GuillaumeGomez who has been recently touching many of the same files modified in #104963 (for example in #103886 and #105183). |
…-105735-fix, r=notriddle,aDotInTheVoid Fix invalid display of inlined re-export when both local and foreign items are inlined Fixes rust-lang#105735. The bug is actually quite interesting: at the `clean` pass, local inlined items have their `use` item removed, however foreign items don't have their `use` item removed because it's in the `clean` pass that we handle them. So when a `use` inlines both a local and a foreign item, it will work as expected for the foreign one, but not for the local as its `use` should not be around anymore. To prevent this, I created a new `inlined_foreigns` field into the `Module` struct to allow to remove the `use` item early on for foreign items as well. Then we iterate it in the `clean` pass directly. r? `@notriddle`
…-105735-fix, r=notriddle,aDotInTheVoid Fix invalid display of inlined re-export when both local and foreign items are inlined Fixes rust-lang#105735. The bug is actually quite interesting: at the `clean` pass, local inlined items have their `use` item removed, however foreign items don't have their `use` item removed because it's in the `clean` pass that we handle them. So when a `use` inlines both a local and a foreign item, it will work as expected for the foreign one, but not for the local as its `use` should not be around anymore. To prevent this, I created a new `inlined_foreigns` field into the `Module` struct to allow to remove the `use` item early on for foreign items as well. Then we iterate it in the `clean` pass directly. r? ``@notriddle``
…-105735-fix, r=notriddle,aDotInTheVoid Fix invalid display of inlined re-export when both local and foreign items are inlined Fixes rust-lang#105735. The bug is actually quite interesting: at the `clean` pass, local inlined items have their `use` item removed, however foreign items don't have their `use` item removed because it's in the `clean` pass that we handle them. So when a `use` inlines both a local and a foreign item, it will work as expected for the foreign one, but not for the local as its `use` should not be around anymore. To prevent this, I created a new `inlined_foreigns` field into the `Module` struct to allow to remove the `use` item early on for foreign items as well. Then we iterate it in the `clean` pass directly. r? `@notriddle`
cargo +nightly-2022-12-02 doc
cargo +nightly-2022-12-03 doc
I believe the one on the left is what I would consider the correct rendering, and the one on the right is a regression.
The regression is in nightly-2022-12-03, specifically #104963 according to bisect, which makes sense. Mentioning @petrochenkov @cjgillot in case an obvious cause stands out to either of you.
The text was updated successfully, but these errors were encountered: