Rollup of 9 pull requests
Successful merges:
- #126013 (Add `#[warn(unreachable_pub)]` to a bunch of compiler crates)
- #128157 (deduplicate and clarify rules for converting pointers to references)
- #129032 (Document & implement the transmutation modeled by `BikeshedIntrinsicFrom`)
- #129250 (Do not ICE on non-ADT rcvr type when looking for crate version collision)
- #129340 (Remove Duplicate E0381 Label)
- #129560 ([rustdoc] Generate source link on impl associated types)
- #129622 (Remove a couple of unused feature enables)
- #129625 (Rename `ParenthesizedGenericArgs` to `GenericArgsMode`)
- #129626 (Remove `ParamMode::ExplicitNamed`)
Failed merges:
- #128166 (Improved `checked_isqrt` and `isqrt` methods)
r? `@ghost`
`@rustbot` modify labels: rollup
Remove `ParamMode::ExplicitNamed`
This was introduced as a hack to improve a diagnostics suggestion in #61679. It was subsequently broken, but also it was an incomplete hack that I don't believe we need to support, so let's just remove it.
Remove Duplicate E0381 Label
Aims to resolve https://github.com/rust-lang/rust/issues/129274, and adds a test for the case.
Essentially, we are duplicating this span for some reason. For now, I'm just using a set to collect the spans rather than the vec. I imagine there's probably no real reason to inspect duplicates in this area, but if I'm wrong I can adjust to collect "seen spans" in just the point where this label is applied.
I'm not sure why it's producing duplicate spans. Looks like this has been this way for a while? I think it gives the duplicate label on 1.75.0 for example.
Do not ICE on non-ADT rcvr type when looking for crate version collision
When looking for multiple versions of the same crate, do not blindly construct the receiver type.
Follow up to #128786.
Fixes#129205Fixes#129216
Document & implement the transmutation modeled by `BikeshedIntrinsicFrom`
Documents that `BikeshedIntrinsicFrom` models transmute-via-union, which is slightly more expressive than the transmute-via-cast implemented by `transmute_copy`. Additionally, we provide an implementation of transmute-via-union as a method on the `BikeshedIntrinsicFrom` trait with additional documentation on the boundary between trait invariants and caller obligations.
Whether or not transmute-via-union is the right kind of transmute to model remains up for discussion [1]. Regardless, it seems wise to document the present behavior.
[1] https://rust-lang.zulipchat.com/#narrow/stream/216762-project-safe-transmute/topic/What.20'kind'.20of.20transmute.20to.20model.3F/near/426331967
Tracking Issue: https://github.com/rust-lang/rust/issues/99571
r? `@compiler-errors`
cc `@scottmcm,` `@Lokathor`
Add `#[warn(unreachable_pub)]` to a bunch of compiler crates
By default `unreachable_pub` identifies things that need not be `pub` and tells you to make them `pub(crate)`. But sometimes those things don't need any kind of visibility. So they way I did these was to remove the visibility entirely for each thing the lint identifies, and then add `pub(crate)` back in everywhere the compiler said it was necessary. (Or occasionally `pub(super)` when context suggested that was appropriate.) Tedious, but results in more `pub` removal.
There are plenty more crates to do but this seems like enough for a first PR.
r? `@compiler-errors`
Inspired by discussion on
https://github.com/rust-lang/rust/issues/129486 this is intended to at
least document the current state of the world in a more public location
than throughout a series of issues.