-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Fix visible_parent_map to choose globally minimal paths #46708
Conversation
(rust_highfive has picked a reviewer for you, use r? to override) |
r? @arielb1 |
@arielb1 should I give this to @alexcrichton to review instead? Who is best here? |
This is a beta regression, so: @bors r+ p=1 |
📌 Commit 35bcd99 has been approved by |
🌲 The tree is currently closed for pull requests below priority 2, this pull request will be tested once the tree is reopened |
⌛ Testing commit 35bcd99 with merge 95fa44657a672ad545fb49d483bfbd0664fbb526... |
@bors retry
|
Fix visible_parent_map to choose globally minimal paths Fix #46112: visible_parent_map construction needs a BFS over whole crate forest to get globally minimal paths. (There are other latent bugs that were e.g. causing this test case to have weirdness like `<unnamed>` in the diagnostic output. Those bugs are not fixed here, since they are issues long-standing in the stable channel.)
☀️ Test successful - status-appveyor, status-travis |
Sorting by crate-num should ensure that we favor `std::foo::bar` over `any_other_crate::foo::bar`. Interestingly, *this* change had a much larger impact on our internal test suite than PR rust-lang#46708 (which was my original fix to rust-lang#46112).
(removing beta-nominated tag in favor of #46838 instead, which we think is a much narrower change and thus less risky for beta...) |
Sorting by crate-num should ensure that we favor `std::foo::bar` over `any_other_crate::foo::bar`. Interestingly, *this* change had a much larger impact on our internal test suite than PR rust-lang#46708 (which was my original fix to rust-lang#46112). ---- (This is cherry-pick of aa030dd to beta.)
…re::` The reason we see `core::` even after visiting the `std` crate first is the special case code that looks like this: ```rust Entry::Occupied(mut entry) => { // If `child` is defined in crate `cnum`, ensure // that it is mapped to a parent in `cnum`. if child.krate == cnum && entry.get().krate != cnum { entry.insert(parent); } } ``` This causes items to be associated with the crates they were originally defined in, even if we had encountered them during the traversal of an earlier crate. (Having said that, I am not clear on why this same logic does not apply when both rust-lang#46708 and rust-lang#46838 have been applied. But at this point, I am just happy to have a plausible explanation for why we see `core::foo::bar` in the output for these tests, and want to focus on getting this fix for rust-lang#46112 backported to beta.)
…woerister Backport 46112 fix to beta Its probably easiest to focus on the diff rather than the commit series. If you prefer I could squash them, but I figured preserving the cherry-picking will make it easier to relate what has happened here to what happens on the `master` branch. Note: This is a backport of *just* #46838. It does not include #46708 (which we may end up wanting to revert). Fix #46112
Fix #46112: visible_parent_map construction needs a BFS over whole crate forest to get globally minimal paths.
(There are other latent bugs that were e.g. causing this test case to have weirdness like
<unnamed>
in the diagnostic output. Those bugs are not fixed here, since they are issues long-standing in the stable channel.)