Rollup of 14 pull requests
Successful merges:
- #86410 (VecMap::get_value_matching should return just one element)
- #86790 (Document iteration order of `retain` functions)
- #87171 (Remove Option from BufWriter)
- #87175 (Stabilize `into_parts()` and `into_error()`)
- #87185 (Fix panics on Windows when the build was cancelled)
- #87191 (Package LLVM libs for the target rather than the build host)
- #87255 (better support for running libcore tests with Miri)
- #87266 (Add testcase for 87076)
- #87283 (Add `--codegen-backends=foo,bar` configure flag)
- #87322 (fix: clarify suggestion that `&T` must refer to `T: Sync` for `&T: Send`)
- #87358 (Fix `--dry-run` when download-ci-llvm is set)
- #87380 (Don't default to `submodules = true` unless the rust repo has a .git directory)
- #87398 (Add test for fonts used for module items)
- #87412 (Add missing article)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Fix `--dry-run` when download-ci-llvm is set
Previously it would error out:
```
$ x check --dry-run
thread 'main' panicked at 'std::fs::read_to_string(ci_llvm.join("link-type.txt")) failed with No such file or directory (os error 2) ("CI llvm missing: /home/joshua/rustc3/build/tmp-dry-run/x86_64-unknown-linux-gnu/ci-llvm")', src/bootstrap/config.rs:795:33
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Build completed unsuccessfully in 0:00:10
```
fix: clarify suggestion that `&T` must refer to `T: Sync` for `&T: Send`
### Description
- [x] fix#86507
- [x] add UI test for relevant code from issue
- [x] change `rustc_trait_selection/src/traits/error_reporting/suggestions.rs` to include a more clear suggestion when `&T` fails to satisfy `Send` bounds due to the fact that `T` fails to implement `Sync`
- [x] update UI test in Clippy: `src/tools/tests/ui/future_not_send.stderr`
Add `--codegen-backends=foo,bar` configure flag
Unfortunately this requires a proper `./configure` flag, as the codegen backends config entry is a list, not a string (breaking `--set`).
Package LLVM libs for the target rather than the build host
Fixes https://github.com/rust-lang/rust/issues/85250
`dist.rs` uses, in the `rust-dev` stage, `llvm-config --libfiles` to get a list of the LLVM library files built but of course only for the build host. If the target differs we want to package lib files from the target's build tree instead. This is done by splitting/rejoining the paths on their build directories.
At the moment `tree` on the LLVM build directories seems to give almost identical output, but of course this might not be the case in the future. If a file is missing in the target's build tree then this stage will error in the `builder.install()` call. If the target build tree has an extra file then it silently won't be copied and we'll get a linker error when building using this artifact (via `download-ci-llvm = "if-available"`), though we would have received a linker error anyway without this change.
There was also a typo in the example config around this option.
Stabilize `into_parts()` and `into_error()`
This stabilizes `IntoInnerError`'s `into_parts()` and `into_error()` methods, currently gated behind the `io_into_inner_error_parts` feature. The FCP has [already completed.](https://github.com/rust-lang/rust/issues/79704#issuecomment-880652967)
Closes#79704.
Document iteration order of `retain` functions
For `HashSet` and `HashMap`, this simply copies the comment from
`BinaryHeap::retain`.
For `BTreeSet` and `BTreeMap`, this adds an additional guarantee that
wasn't previously documented. I think that because these data structures
are inherently ordered and other functions guarantee ordered iteration,
it makes sense to provide this guarantee for `retain` as well.
Unbreak and update RLS
Closes#86905Closes#86606Closes#86607
This also prunes old mio 0.6 thanks to Tokio 1.0 bump, so this should now build on aarch64 Windows.
r? `@Mark-Simulacrum`
Rollup of 8 pull requests
Successful merges:
- #87034 (DOC: fix hypothetical Rust code in `step_by()` docstring)
- #87298 (memorialize Anna Harren in the bastion of the turbofish)
- #87332 (Don't hide fields of enum struct variants)
- #87362 (Make `x.py d` an alias for `x.py doc`)
- #87372 (Move calls to test_main into one function)
- #87373 (Extend HIR WF checking to fields)
- #87376 (Change rustdoc logo to use the full container size)
- #87383 (Add regression tests for the impl_trait_in_bindings ICEs)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Change rustdoc logo to use the full container size
We have a logo in svg that scales nicely to large sizes, but by default
is only 5px large, i.e. very small. With the change the logo expands to
the full size. By only setting the height to 100% we ensure that the
width-height ratio isn't changed.
Make `x.py d` an alias for `x.py doc`
In rust-lang/cargo#9680, `d` was added to Cargo as an alias for `doc`. This PR adds the same alias to `x.py`. The same considerations of convenience that applied to Cargo also apply to `x.py`, and in any case, the two should be kept symmetrical.
Don't hide fields of enum struct variants
* The toggle adds visual clutter
* It's easy to miss that there are fields
* Tuple variant fields are always shown, so it is inconsistent to hide
struct variant fields
* It's annoying to have to click the toggle every time
DOC: fix hypothetical Rust code in `step_by()` docstring
I don't know how important that is, but if I'm not mistaken, the hypothetical code in the docstring of `step_by()` (see https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.step_by) isn't correct.
I guess writing `next()` instead of `self.next()` isn't a biggie, but this would also imply that `advance_n_and_return_first()` is a method, which AFAICT it isn't.
I've also done some re-formatting in a separate commit and a parameter renaming in yet another commit.
Feel free to take or leave any combination of those commits.