Skip to content

Automated pull from upstream HEAD#2375

Merged
bors-ferrocene[bot] merged 876 commits into
mainfrom
automation/pull-upstream-HEAD/uejcguym
May 22, 2026
Merged

Automated pull from upstream HEAD#2375
bors-ferrocene[bot] merged 876 commits into
mainfrom
automation/pull-upstream-HEAD/uejcguym

Conversation

@ferrocene-automations

Copy link
Copy Markdown

⚠️ The automation reported these warnings: ⚠️

  • There are merge conflicts in this PR. Merge conflict markers have been committed.
  • Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

RalfJung and others added 30 commits May 9, 2026 23:31
  Resolves a FIXME at hir-ty/src/infer/pat.rs that allowed
  record patterns like `let S { foo, foo } = ...;` to type-check
  with no error. Pushes the InferenceDiagnostic::DuplicateField
  variant (added in rust-lang/rust-analyzer#22235) at the pattern
  site; the cooked diagnostic already supports ExprOrPatId, so no
  plumbing changes are needed.

  Tests: struct pattern positive, enum variant pattern positive.

  Part of rust-lang/rust-analyzer#22140.

Signed-off-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint





This is an extension to rust-lang/rust#147382.

With this PR `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` considered as must use iif `T` must be used.

For such cases the lint will mention that `T` is wrapped in a `Result`/`ControlFlow` with an uninhabited error/break.

The reasoning here is that `Result<T, Uninhabited>` is equivalent to `T` in which values can be represented and thus the must-used-ness should also be equivalent.

Fixes rust-lang/rust#65861
ide-diagnostics: emit error for duplicate field in record pattern
…-Simulacrum

Add Command::get_resolved_envs

This addition allows an end-user to inspect the environment variables that are visible to the process when it boots.

Discussed in:

- Tracking issue: rust-lang/rust#149070 (partially closes)
- ACP: rust-lang/libs-team#194
…imulacrum

Add `str::word_to_titlecase()` to `alloc`

A small addition to rust-lang/rust#153892.

Hasn't gone through ACP, so needs libs-API signoff.

@rustbot label A-Unicode T-libs-api
Add mention of sendfile(2) and splice(2) to fs::copy() documentation.

Fixes rust-lang/rust#155968 by adding mention of sendfile(2) and splice(2) from io::copy()
…ulacrum

Update a bunch of bootstrap dependencies to remove windows-target

Follow up to rust-lang/rust#155444
…illot

Change `SwitchInt` handling in dataflow analysis.

We call `get_switch_int_data` once for the switch and then pass that data to `apply_switch_int_edge_effect` for each switch target.

The only case in practice is `MaybePlacesSwitchIntData` which does an awkward thing, maintaining an index into the discriminants and updating it on each call to `apply_switch_int_edge_effect`.

This commit changes things to do more work up front in `get_switch_int_data`, in order to then do less work in `apply_switch_int_edge_effect`. This avoids the need for the `variants` and `next_discr` methods and the discriminants index. Overall it's a little simpler.

r? @cjgillot
…lmann

error on empty `export_name`

fixes rust-lang/rust#155495

Using an empty string as the name makes LLVM make up a name. However this name can be inconsistent between compilation units, which is UB and can cause linking errors, and some parts of LLVM just crash on the empty name (see the linked issue).

As far as we know there is only one valid pattern that could use this, a `#[used]` static that is not referenced by the program at all. That is not UB, but the `export_name` is not required for that to work, just normal rust name mangling would do fine.

Technically this is a breaking change, but it seems unlikely that this actually breaks code in the wild that wasn't already broken. I'll leave it up to T-lang to determine what is required here (crater run, FCW, ...), but my gut feeling is that we could just merge this and nobody would notice.
validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters

fixes rust-lang/rust#155776
fixes rust-lang/rust#155484

specifically, do not allow NULL bytes and the empty string in `#[link_name = "..."]` and `#[link(name = "...")]`.

Like some of the others I think this formally needs to be looked at by T-lang because these errors would not show up if not linking.

The LLVM erorr on `#[linke_name = "\0"]` is emitted here, it is not e.g. target-specific.

https://github.com/llvm/llvm-project/blob/d593279c0b2891f0b0c8af3f70a1a0383b4ad1b5/llvm/lib/IR/Value.cpp#L336-L342

On `#[link(name = "")]` we already error today. A NULL byte in `#[link(name = "\0")]` is caught by the linker (https://godbolt.org/z/vnz9sYbPs), using `#[link_name = ""]` makes LLVM generate a name (https://godbolt.org/z/1hWEo4cxf) which is not useful and likely to cause linker errors.

r? jdonszelmann
remove turbofish notation + use None / Some instead of Option:: (in match documentation)
…mulacrum

mark some panicking methods around Duration as track_caller

Currently when they panic it looks like this
```
  0.005045   ---- instant_checked_duration_since_nopanic stdout ----
  0.000039
  0.000009   thread 'instant_checked_duration_since_nopanic' (2) panicked at /home/runner/work/miri-test-libstd/miri-test-libstd/rust-src-patched/library/std/src/time.rs:445:33:
  0.000007   overflow when subtracting duration from instant
  0.000006   note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
  0.000007   note: in Miri, you may have to set `MIRIFLAGS=-Zmiri-env-forward=RUST_BACKTRACE` for the environment variable to have an effect
```
That's pretty useless.

Also fix the panic message while we are at it.
…r=JonathanBrouwer

`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`
…closure-to-fn

migrate convert closure to fn to SyntaxEditor
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#149362 (Add Command::get_resolved_envs)
 - rust-lang/rust#155705 (Add `str::word_to_titlecase()` to `alloc`)
 - rust-lang/rust#155970 (Add mention of sendfile(2) and splice(2) to fs::copy() documentation.)
 - rust-lang/rust#156006 (Update a bunch of bootstrap dependencies to remove windows-target)
 - rust-lang/rust#156169 (Change `SwitchInt` handling in dataflow analysis.)
 - rust-lang/rust#155188 (Add regression test for issue 144329)
 - rust-lang/rust#155515 (error on empty `export_name`)
 - rust-lang/rust#155817 (validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters)
 - rust-lang/rust#156107 (remove turbofish notation + use None / Some instead of Option:: (in match documentation))
 - rust-lang/rust#156133 (mark some panicking methods around Duration as track_caller)
 - rust-lang/rust#156363 (`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`)
Replace a hardcoded constant with `mem::variant_count` to keep in-sync
with the `ResolutionFailure` enum.
@Hoverbear Hoverbear force-pushed the automation/pull-upstream-HEAD/uejcguym branch from b0160e9 to fdf8373 Compare May 15, 2026 14:31
jyn514

This comment was marked as outdated.

bors-ferrocene Bot added a commit that referenced this pull request May 15, 2026
2375: Automated pull from upstream `HEAD` r=jyn514 a=ferrocene-automations[bot]

:warning: **The automation reported these warnings:** :warning:

* There are merge conflicts in this PR. Merge conflict markers have been committed.
* Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

* `156559`: [Rollup of 7 pull requests](https://www.github.com/rust-lang/rust/issues/156559)
  * `156540`: [use `deref_patterns` in `rustdoc` instead of `box_patterns`](https://www.github.com/rust-lang/rust/issues/156540)
  * `156539`: [Add `ChildExt::kill_process_group`](https://www.github.com/rust-lang/rust/issues/156539)
  * `156413`: [rustdoc: Correctness & perf improvements to link-to-definition](https://www.github.com/rust-lang/rust/issues/156413)
  * `156260`: [test: suppress deprecation warning](https://www.github.com/rust-lang/rust/issues/156260)
  * `156500`: [Privacy: move macros handling to early stage](https://www.github.com/rust-lang/rust/issues/156500)
  * `156344`: [Do not index past end of buffer when checking heuristic in error index syntax highlighter](https://www.github.com/rust-lang/rust/issues/156344)
  * `156552`: [Clippy subtree update](https://www.github.com/rust-lang/rust/issues/156552)
* `138995`: [Split the node_id_to_def_id table into a per-owner table](https://www.github.com/rust-lang/rust/issues/138995)
* `156546`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156546)
  * `156543`: [Update rustbook dependencies to remove windows-targets dependency](https://www.github.com/rust-lang/rust/issues/156543)
  * `156536`: [`reveal_actual_level` improvements](https://www.github.com/rust-lang/rust/issues/156536)
  * `156425`: [Fix unused assignments in diverging branches](https://www.github.com/rust-lang/rust/issues/156425)
  * `155815`: [Add Swift function call ABI](https://www.github.com/rust-lang/rust/issues/155815)
* `156535`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156535)
  * `156325`: [Don't treat const param default as projection](https://www.github.com/rust-lang/rust/issues/156325)
  * `156524`: [Remove the dummy `PreCodegen` mir-opt pass, and use `runtime-optimized` instead](https://www.github.com/rust-lang/rust/issues/156524)
  * `156513`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156513)
  * `156504`: [bootstrap: remap windows-style OUT_DIR paths](https://www.github.com/rust-lang/rust/issues/156504)
  * `156472`: [Add support for Zprint-codegen-stats-json](https://www.github.com/rust-lang/rust/issues/156472)
* `156224`: [Unnormalized migration: assert_fully_normalized, struct_tail, and `field.ty`](https://www.github.com/rust-lang/rust/issues/156224)
* `156506`: [Rollup of 6 pull requests](https://www.github.com/rust-lang/rust/issues/156506)
  * `156502`: [Give an example of a Ctor in the doc-comments](https://www.github.com/rust-lang/rust/issues/156502)
  * `156284`: [resolve: Fix a false positive "cannot reexport" error for ambiguous glob sets](https://www.github.com/rust-lang/rust/issues/156284)
  * `156145`: [Move tests cast](https://www.github.com/rust-lang/rust/issues/156145)
  * `156431`: [Move `std::io::util` to `core::io`](https://www.github.com/rust-lang/rust/issues/156431)
  * `156428`: [Move `std::io::Cursor` to `core::io`](https://www.github.com/rust-lang/rust/issues/156428)
  * `156287`: [move more compiler crates away from `box_patterns` ](https://www.github.com/rust-lang/rust/issues/156287)
* `156483`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156483)
  * `156479`: [fix missing space in Rc::decrement_strong_count docs](https://www.github.com/rust-lang/rust/issues/156479)
  * `154918`: [Fix elided lifetime resolution & trait object lifetime defaulting for enum variant paths](https://www.github.com/rust-lang/rust/issues/154918)
  * `156393`: [enable more f16/f128 tests in Miri](https://www.github.com/rust-lang/rust/issues/156393)
  * `154754`: [Add Enzyme to build-manifest and rustup](https://www.github.com/rust-lang/rust/issues/154754)
* `155887`: [-Zassumptions-on-binders](https://www.github.com/rust-lang/rust/issues/155887)
* `156473`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156473)
  * `156466`: [Refactor `CheckAttrVisitor` so rustfmt can format it.](https://www.github.com/rust-lang/rust/issues/156466)
  * `156462`: [LLVM 23: Accept float (instead of hex) literals in codegen tests](https://www.github.com/rust-lang/rust/issues/156462)
  * `156461`: [LLVM 23: Specify `returnaddress` intrinsic return type](https://www.github.com/rust-lang/rust/issues/156461)
  * `156442`: [Show intrinsics::gpu in docs](https://www.github.com/rust-lang/rust/issues/156442)
  * `156022`: [rustdoc: Fix cosmetic issues when reporting unresolved paths in `broken_intra_doc_links`](https://www.github.com/rust-lang/rust/issues/156022)
  * `155184`: [ Have arrays' `drop_glue` just unsize and call the slice version](https://www.github.com/rust-lang/rust/issues/155184)
  * `155169`: [jsondoclint: simplify code using idiomatic Rust](https://www.github.com/rust-lang/rust/issues/155169)
  * `147672`: [LLBC-linker: Do not strip debug symbols for the nvptx target anymore](https://www.github.com/rust-lang/rust/issues/147672)
  * `156429`: [Simplify `intrinsic::raw_eq` in MIR when possible](https://www.github.com/rust-lang/rust/issues/156429)
  * `155023`: [Introduce move expressions (`move($expr)`) ](https://www.github.com/rust-lang/rust/issues/155023)
  * `156448`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156448)
* `156441`: [Rollup of 13 pull requests](https://www.github.com/rust-lang/rust/issues/156441)
  * `156426`: [Fix unwanted "Available on XX-bit only" in libcore integers](https://www.github.com/rust-lang/rust/issues/156426)
  * `156411`: [bootstrap: Don't panic on `x install --set build.extended=true`](https://www.github.com/rust-lang/rust/issues/156411)
  * `156392`: [Improve doc comments for f32::ceil() and f32::floor()](https://www.github.com/rust-lang/rust/issues/156392)
  * `156384`: [Remove some dead code for dumping MIR for a single DefId](https://www.github.com/rust-lang/rust/issues/156384)
  * `156372`: [remove allows_weak_linkage target spec flag](https://www.github.com/rust-lang/rust/issues/156372)
  * `156282`: [Update `sysinfo` version to `0.39.0`](https://www.github.com/rust-lang/rust/issues/156282)
  * `155946`: [Refuse to push changes with a dirty git client](https://www.github.com/rust-lang/rust/issues/155946)
  * `156406`: [resolve: Module-related refactorings](https://www.github.com/rust-lang/rust/issues/156406)
  * `156375`: [kernel_copy tests: properly join background threads](https://www.github.com/rust-lang/rust/issues/156375)
  * `156147`: [Update ICU4X to 2.2](https://www.github.com/rust-lang/rust/issues/156147)
  * `156389`: [prepare fs tests for miri](https://www.github.com/rust-lang/rust/issues/156389)
  * `156357`: [tests: ip*_properties: avoid parsing the IP over and over again](https://www.github.com/rust-lang/rust/issues/156357)
  * `156437`: [`rust-analyzer` subtree update](https://www.github.com/rust-lang/rust/issues/156437)
* `153975`: [remove forever-deprecated and hidden `f64` methods](https://www.github.com/rust-lang/rust/issues/153975)
* `156405`: [Rollup of 10 pull requests](https://www.github.com/rust-lang/rust/issues/156405)
  * `156368`: [Fix invalid unreachable in is_known_valid_scrutinee for Reborrow](https://www.github.com/rust-lang/rust/issues/156368)
  * `156365`: [stream_send_recv_stress tests: wait for threads to finish](https://www.github.com/rust-lang/rust/issues/156365)
  * `156192`: [core: Replace `ptr::slice_from_raw_parts` with `slice::from_raw_parts`](https://www.github.com/rust-lang/rust/issues/156192)
  * `156129`: [compiletest: Migrate from `PassMode`/`FailMode` to `PassFailMode`](https://www.github.com/rust-lang/rust/issues/156129)
  * `156387`: [std fs tests: avoid matching on OS-provided error string](https://www.github.com/rust-lang/rust/issues/156387)
  * `156323`: [Handle --print=backend-has-mnemonic in cg_clif](https://www.github.com/rust-lang/rust/issues/156323)
  * `155982`: [Fix closure HIR span context mismatch](https://www.github.com/rust-lang/rust/issues/155982)
  * `155679`: [rustdoc: Reify emission types](https://www.github.com/rust-lang/rust/issues/155679)
  * `154972`: [Implement `core::arch::return_address` and tests](https://www.github.com/rust-lang/rust/issues/154972)
  * `156394`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156394)
* `144537`: [Add `Drop::pin_drop` for pinned drops](https://www.github.com/rust-lang/rust/issues/144537)
* `156185`: [resolve: Evaluate private visibilities eagerly in eff vis computation](https://www.github.com/rust-lang/rust/issues/156185)
* `156378`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156378)
  * `156363`: [`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`](https://www.github.com/rust-lang/rust/issues/156363)
  * `156133`: [mark some panicking methods around Duration as track_caller](https://www.github.com/rust-lang/rust/issues/156133)
  * `156107`: [remove turbofish notation + use None / Some instead of Option:: (in match documentation)](https://www.github.com/rust-lang/rust/issues/156107)
  * `155817`: [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://www.github.com/rust-lang/rust/issues/155817)
  * `155515`: [error on empty `export_name`](https://www.github.com/rust-lang/rust/issues/155515)
  * `155188`: [Add regression test for issue 144329](https://www.github.com/rust-lang/rust/issues/155188)
  * `156169`: [Change `SwitchInt` handling in dataflow analysis.](https://www.github.com/rust-lang/rust/issues/156169)
  * `156006`: [Update a bunch of bootstrap dependencies to remove windows-target](https://www.github.com/rust-lang/rust/issues/156006)
  * `155970`: [Add mention of sendfile(2) and splice(2) to fs::copy() documentation.](https://www.github.com/rust-lang/rust/issues/155970)
  * `155705`: [Add `str::word_to_titlecase()` to `alloc`](https://www.github.com/rust-lang/rust/issues/155705)
  * `149362`: [Add Command::get_resolved_envs](https://www.github.com/rust-lang/rust/issues/149362)
* `148214`: [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://www.github.com/rust-lang/rust/issues/148214)
* `155321`: [`BufWriter`: Make the soundness of `BorrowedBuf` usage clearer.](https://www.github.com/rust-lang/rust/issues/155321)
* `156361`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156361)
  * `156353`: [resolve: Set correct parent and expansion for `self` declarations](https://www.github.com/rust-lang/rust/issues/156353)
  * `156235`: [fix: Guard SizeSkeleton::compute against stack overflow](https://www.github.com/rust-lang/rust/issues/156235)
  * `156124`: [Make stable hashing names consistent (part 2)](https://www.github.com/rust-lang/rust/issues/156124)
  * `156359`: [use `cfg_select!` in integer `{to, from}_{le, be}`](https://www.github.com/rust-lang/rust/issues/156359)
  * `156354`: [Update example code of `std::array::from_fn`](https://www.github.com/rust-lang/rust/issues/156354)
* `156351`: [Update cargo submodule](https://www.github.com/rust-lang/rust/issues/156351)
* `156297`: [Implement some trait for next solver's lang item enums](https://www.github.com/rust-lang/rust/issues/156297)
* `156341`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156341)
  * `156337`: [rustc-dev-guide subtree update](https://www.github.com/rust-lang/rust/issues/156337)
  * `156333`: [Avoid invalid spans in dotdotdot rest pattern suggestions](https://www.github.com/rust-lang/rust/issues/156333)
  * `156306`: [Move tests consts](https://www.github.com/rust-lang/rust/issues/156306)
  * `156244`: [fix incorrect suggestions in private import diagnostic](https://www.github.com/rust-lang/rust/issues/156244)
  * `156141`: [Resolve some cases of #132279 by using the right typing mode in the next solver](https://www.github.com/rust-lang/rust/issues/156141)
* `156324`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156324)
  * `156301`: [Avoid ICE when suggesting as_ref for ill-typed closure receivers](https://www.github.com/rust-lang/rust/issues/156301)
  * `156291`: [Treat MSVC "performing full link" message as informational](https://www.github.com/rust-lang/rust/issues/156291)
  * `156038`: [turn `compute_goal_fast_path` into a single match](https://www.github.com/rust-lang/rust/issues/156038)
  * `156246`: [Introduce a `RerunNonErased` error type mirroring `NoSolution`, to better track when we're bailing](https://www.github.com/rust-lang/rust/issues/156246)


Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
Co-authored-by: workflows-rust-analyzer[bot] <223433972+workflows-rust-analyzer[bot]@users.noreply.github.com>
Co-authored-by: Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com>
Co-authored-by: bit-aloo <sshourya17@gmail.com>
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
@bors-ferrocene

This comment was marked as outdated.

Seemingly on XFS only, the `AlreadyExists` variant is returned.

Reproducible on Linux hosts:

```rust
use clap::Parser;

struct Args {
    /// Destination to try
    #[arg()]
    path: std::path::PathBuf,
}

fn main() {
    let args = Args::parse();

    // Renaming a directory over a non-empty existing directory should fail.
    let tmpdir = std::path::Path::new(&args.path);
    std::fs::create_dir_all(tmpdir).unwrap();

    let source_path = tmpdir.join("source_directory");
    let target_path = tmpdir.join("target_directory");

    std::fs::create_dir(&source_path).unwrap();
    std::fs::create_dir(&target_path).unwrap();

    let target_path_file = target_path.join("target_file.txt");
    std::fs::write(target_path.join("target_file.txt"), b"target hello world").unwrap();
    println!("wrote {target_path_file:?}");

    println!("{source_path:?} -> {target_path:?}");
    let err = std::fs::rename(source_path, target_path).unwrap_err();
    assert_eq!(err.kind(), std::io::ErrorKind::DirectoryNotEmpty);
}
```

```bash
XFS_BLOCK=image-xfs
truncate -s 512M image-xfs
mkfs.xfs -q image-xfs
mkdir mnt-xfs
sudo mount -o loop image-xfs mnt-xfs
sudo chmod 777 mnt-xfs
cargo run -- mnt-xfs/
```

Output:

```
wrote "mnt-xfs/target_directory/target_file.txt"
"mnt-xfs/source_directory" -> "mnt-xfs/target_directory"

thread 'main' (267220) panicked at src/main.rs:30:5:
assertion `left == right` failed
  left: AlreadyExists
 right: DirectoryNotEmpty
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
@Hoverbear Hoverbear force-pushed the automation/pull-upstream-HEAD/uejcguym branch from f4ee4a5 to c632096 Compare May 19, 2026 22:18

@Urhengulas Urhengulas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, apart from one suggestion. If you disagree to add the comment, feel free to merge.

Comment thread library/std/src/fs/tests.rs
Co-authored-by: Johann Hemmann <johann.hemmann@ferrous-systems.com>
Urhengulas

This comment was marked as outdated.

bors-ferrocene Bot added a commit that referenced this pull request May 20, 2026
2375: Automated pull from upstream `HEAD` r=Urhengulas a=ferrocene-automations[bot]

:warning: **The automation reported these warnings:** :warning:

* There are merge conflicts in this PR. Merge conflict markers have been committed.
* Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

* `156559`: [Rollup of 7 pull requests](https://www.github.com/rust-lang/rust/issues/156559)
  * `156540`: [use `deref_patterns` in `rustdoc` instead of `box_patterns`](https://www.github.com/rust-lang/rust/issues/156540)
  * `156539`: [Add `ChildExt::kill_process_group`](https://www.github.com/rust-lang/rust/issues/156539)
  * `156413`: [rustdoc: Correctness & perf improvements to link-to-definition](https://www.github.com/rust-lang/rust/issues/156413)
  * `156260`: [test: suppress deprecation warning](https://www.github.com/rust-lang/rust/issues/156260)
  * `156500`: [Privacy: move macros handling to early stage](https://www.github.com/rust-lang/rust/issues/156500)
  * `156344`: [Do not index past end of buffer when checking heuristic in error index syntax highlighter](https://www.github.com/rust-lang/rust/issues/156344)
  * `156552`: [Clippy subtree update](https://www.github.com/rust-lang/rust/issues/156552)
* `138995`: [Split the node_id_to_def_id table into a per-owner table](https://www.github.com/rust-lang/rust/issues/138995)
* `156546`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156546)
  * `156543`: [Update rustbook dependencies to remove windows-targets dependency](https://www.github.com/rust-lang/rust/issues/156543)
  * `156536`: [`reveal_actual_level` improvements](https://www.github.com/rust-lang/rust/issues/156536)
  * `156425`: [Fix unused assignments in diverging branches](https://www.github.com/rust-lang/rust/issues/156425)
  * `155815`: [Add Swift function call ABI](https://www.github.com/rust-lang/rust/issues/155815)
* `156535`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156535)
  * `156325`: [Don't treat const param default as projection](https://www.github.com/rust-lang/rust/issues/156325)
  * `156524`: [Remove the dummy `PreCodegen` mir-opt pass, and use `runtime-optimized` instead](https://www.github.com/rust-lang/rust/issues/156524)
  * `156513`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156513)
  * `156504`: [bootstrap: remap windows-style OUT_DIR paths](https://www.github.com/rust-lang/rust/issues/156504)
  * `156472`: [Add support for Zprint-codegen-stats-json](https://www.github.com/rust-lang/rust/issues/156472)
* `156224`: [Unnormalized migration: assert_fully_normalized, struct_tail, and `field.ty`](https://www.github.com/rust-lang/rust/issues/156224)
* `156506`: [Rollup of 6 pull requests](https://www.github.com/rust-lang/rust/issues/156506)
  * `156502`: [Give an example of a Ctor in the doc-comments](https://www.github.com/rust-lang/rust/issues/156502)
  * `156284`: [resolve: Fix a false positive "cannot reexport" error for ambiguous glob sets](https://www.github.com/rust-lang/rust/issues/156284)
  * `156145`: [Move tests cast](https://www.github.com/rust-lang/rust/issues/156145)
  * `156431`: [Move `std::io::util` to `core::io`](https://www.github.com/rust-lang/rust/issues/156431)
  * `156428`: [Move `std::io::Cursor` to `core::io`](https://www.github.com/rust-lang/rust/issues/156428)
  * `156287`: [move more compiler crates away from `box_patterns` ](https://www.github.com/rust-lang/rust/issues/156287)
* `156483`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156483)
  * `156479`: [fix missing space in Rc::decrement_strong_count docs](https://www.github.com/rust-lang/rust/issues/156479)
  * `154918`: [Fix elided lifetime resolution & trait object lifetime defaulting for enum variant paths](https://www.github.com/rust-lang/rust/issues/154918)
  * `156393`: [enable more f16/f128 tests in Miri](https://www.github.com/rust-lang/rust/issues/156393)
  * `154754`: [Add Enzyme to build-manifest and rustup](https://www.github.com/rust-lang/rust/issues/154754)
* `155887`: [-Zassumptions-on-binders](https://www.github.com/rust-lang/rust/issues/155887)
* `156473`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156473)
  * `156466`: [Refactor `CheckAttrVisitor` so rustfmt can format it.](https://www.github.com/rust-lang/rust/issues/156466)
  * `156462`: [LLVM 23: Accept float (instead of hex) literals in codegen tests](https://www.github.com/rust-lang/rust/issues/156462)
  * `156461`: [LLVM 23: Specify `returnaddress` intrinsic return type](https://www.github.com/rust-lang/rust/issues/156461)
  * `156442`: [Show intrinsics::gpu in docs](https://www.github.com/rust-lang/rust/issues/156442)
  * `156022`: [rustdoc: Fix cosmetic issues when reporting unresolved paths in `broken_intra_doc_links`](https://www.github.com/rust-lang/rust/issues/156022)
  * `155184`: [ Have arrays' `drop_glue` just unsize and call the slice version](https://www.github.com/rust-lang/rust/issues/155184)
  * `155169`: [jsondoclint: simplify code using idiomatic Rust](https://www.github.com/rust-lang/rust/issues/155169)
  * `147672`: [LLBC-linker: Do not strip debug symbols for the nvptx target anymore](https://www.github.com/rust-lang/rust/issues/147672)
  * `156429`: [Simplify `intrinsic::raw_eq` in MIR when possible](https://www.github.com/rust-lang/rust/issues/156429)
  * `155023`: [Introduce move expressions (`move($expr)`) ](https://www.github.com/rust-lang/rust/issues/155023)
  * `156448`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156448)
* `156441`: [Rollup of 13 pull requests](https://www.github.com/rust-lang/rust/issues/156441)
  * `156426`: [Fix unwanted "Available on XX-bit only" in libcore integers](https://www.github.com/rust-lang/rust/issues/156426)
  * `156411`: [bootstrap: Don't panic on `x install --set build.extended=true`](https://www.github.com/rust-lang/rust/issues/156411)
  * `156392`: [Improve doc comments for f32::ceil() and f32::floor()](https://www.github.com/rust-lang/rust/issues/156392)
  * `156384`: [Remove some dead code for dumping MIR for a single DefId](https://www.github.com/rust-lang/rust/issues/156384)
  * `156372`: [remove allows_weak_linkage target spec flag](https://www.github.com/rust-lang/rust/issues/156372)
  * `156282`: [Update `sysinfo` version to `0.39.0`](https://www.github.com/rust-lang/rust/issues/156282)
  * `155946`: [Refuse to push changes with a dirty git client](https://www.github.com/rust-lang/rust/issues/155946)
  * `156406`: [resolve: Module-related refactorings](https://www.github.com/rust-lang/rust/issues/156406)
  * `156375`: [kernel_copy tests: properly join background threads](https://www.github.com/rust-lang/rust/issues/156375)
  * `156147`: [Update ICU4X to 2.2](https://www.github.com/rust-lang/rust/issues/156147)
  * `156389`: [prepare fs tests for miri](https://www.github.com/rust-lang/rust/issues/156389)
  * `156357`: [tests: ip*_properties: avoid parsing the IP over and over again](https://www.github.com/rust-lang/rust/issues/156357)
  * `156437`: [`rust-analyzer` subtree update](https://www.github.com/rust-lang/rust/issues/156437)
* `153975`: [remove forever-deprecated and hidden `f64` methods](https://www.github.com/rust-lang/rust/issues/153975)
* `156405`: [Rollup of 10 pull requests](https://www.github.com/rust-lang/rust/issues/156405)
  * `156368`: [Fix invalid unreachable in is_known_valid_scrutinee for Reborrow](https://www.github.com/rust-lang/rust/issues/156368)
  * `156365`: [stream_send_recv_stress tests: wait for threads to finish](https://www.github.com/rust-lang/rust/issues/156365)
  * `156192`: [core: Replace `ptr::slice_from_raw_parts` with `slice::from_raw_parts`](https://www.github.com/rust-lang/rust/issues/156192)
  * `156129`: [compiletest: Migrate from `PassMode`/`FailMode` to `PassFailMode`](https://www.github.com/rust-lang/rust/issues/156129)
  * `156387`: [std fs tests: avoid matching on OS-provided error string](https://www.github.com/rust-lang/rust/issues/156387)
  * `156323`: [Handle --print=backend-has-mnemonic in cg_clif](https://www.github.com/rust-lang/rust/issues/156323)
  * `155982`: [Fix closure HIR span context mismatch](https://www.github.com/rust-lang/rust/issues/155982)
  * `155679`: [rustdoc: Reify emission types](https://www.github.com/rust-lang/rust/issues/155679)
  * `154972`: [Implement `core::arch::return_address` and tests](https://www.github.com/rust-lang/rust/issues/154972)
  * `156394`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156394)
* `144537`: [Add `Drop::pin_drop` for pinned drops](https://www.github.com/rust-lang/rust/issues/144537)
* `156185`: [resolve: Evaluate private visibilities eagerly in eff vis computation](https://www.github.com/rust-lang/rust/issues/156185)
* `156378`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156378)
  * `156363`: [`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`](https://www.github.com/rust-lang/rust/issues/156363)
  * `156133`: [mark some panicking methods around Duration as track_caller](https://www.github.com/rust-lang/rust/issues/156133)
  * `156107`: [remove turbofish notation + use None / Some instead of Option:: (in match documentation)](https://www.github.com/rust-lang/rust/issues/156107)
  * `155817`: [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://www.github.com/rust-lang/rust/issues/155817)
  * `155515`: [error on empty `export_name`](https://www.github.com/rust-lang/rust/issues/155515)
  * `155188`: [Add regression test for issue 144329](https://www.github.com/rust-lang/rust/issues/155188)
  * `156169`: [Change `SwitchInt` handling in dataflow analysis.](https://www.github.com/rust-lang/rust/issues/156169)
  * `156006`: [Update a bunch of bootstrap dependencies to remove windows-target](https://www.github.com/rust-lang/rust/issues/156006)
  * `155970`: [Add mention of sendfile(2) and splice(2) to fs::copy() documentation.](https://www.github.com/rust-lang/rust/issues/155970)
  * `155705`: [Add `str::word_to_titlecase()` to `alloc`](https://www.github.com/rust-lang/rust/issues/155705)
  * `149362`: [Add Command::get_resolved_envs](https://www.github.com/rust-lang/rust/issues/149362)
* `148214`: [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://www.github.com/rust-lang/rust/issues/148214)
* `155321`: [`BufWriter`: Make the soundness of `BorrowedBuf` usage clearer.](https://www.github.com/rust-lang/rust/issues/155321)
* `156361`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156361)
  * `156353`: [resolve: Set correct parent and expansion for `self` declarations](https://www.github.com/rust-lang/rust/issues/156353)
  * `156235`: [fix: Guard SizeSkeleton::compute against stack overflow](https://www.github.com/rust-lang/rust/issues/156235)
  * `156124`: [Make stable hashing names consistent (part 2)](https://www.github.com/rust-lang/rust/issues/156124)
  * `156359`: [use `cfg_select!` in integer `{to, from}_{le, be}`](https://www.github.com/rust-lang/rust/issues/156359)
  * `156354`: [Update example code of `std::array::from_fn`](https://www.github.com/rust-lang/rust/issues/156354)
* `156351`: [Update cargo submodule](https://www.github.com/rust-lang/rust/issues/156351)
* `156297`: [Implement some trait for next solver's lang item enums](https://www.github.com/rust-lang/rust/issues/156297)
* `156341`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156341)
  * `156337`: [rustc-dev-guide subtree update](https://www.github.com/rust-lang/rust/issues/156337)
  * `156333`: [Avoid invalid spans in dotdotdot rest pattern suggestions](https://www.github.com/rust-lang/rust/issues/156333)
  * `156306`: [Move tests consts](https://www.github.com/rust-lang/rust/issues/156306)
  * `156244`: [fix incorrect suggestions in private import diagnostic](https://www.github.com/rust-lang/rust/issues/156244)
  * `156141`: [Resolve some cases of #132279 by using the right typing mode in the next solver](https://www.github.com/rust-lang/rust/issues/156141)
* `156324`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156324)
  * `156301`: [Avoid ICE when suggesting as_ref for ill-typed closure receivers](https://www.github.com/rust-lang/rust/issues/156301)
  * `156291`: [Treat MSVC "performing full link" message as informational](https://www.github.com/rust-lang/rust/issues/156291)
  * `156038`: [turn `compute_goal_fast_path` into a single match](https://www.github.com/rust-lang/rust/issues/156038)
  * `156246`: [Introduce a `RerunNonErased` error type mirroring `NoSolution`, to better track when we're bailing](https://www.github.com/rust-lang/rust/issues/156246)


Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
Co-authored-by: workflows-rust-analyzer[bot] <223433972+workflows-rust-analyzer[bot]@users.noreply.github.com>
Co-authored-by: Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com>
Co-authored-by: bit-aloo <sshourya17@gmail.com>
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
Co-authored-by: Tony Wu <tonywu6@protonmail.com>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
@bors-ferrocene

This comment was marked as outdated.

@Hoverbear

Copy link
Copy Markdown
Member

Bors merge

bors-ferrocene Bot added a commit that referenced this pull request May 21, 2026
2375: Automated pull from upstream `HEAD` r=Hoverbear a=ferrocene-automations[bot]

:warning: **The automation reported these warnings:** :warning:

* There are merge conflicts in this PR. Merge conflict markers have been committed.
* Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

* `156559`: [Rollup of 7 pull requests](https://www.github.com/rust-lang/rust/issues/156559)
  * `156540`: [use `deref_patterns` in `rustdoc` instead of `box_patterns`](https://www.github.com/rust-lang/rust/issues/156540)
  * `156539`: [Add `ChildExt::kill_process_group`](https://www.github.com/rust-lang/rust/issues/156539)
  * `156413`: [rustdoc: Correctness & perf improvements to link-to-definition](https://www.github.com/rust-lang/rust/issues/156413)
  * `156260`: [test: suppress deprecation warning](https://www.github.com/rust-lang/rust/issues/156260)
  * `156500`: [Privacy: move macros handling to early stage](https://www.github.com/rust-lang/rust/issues/156500)
  * `156344`: [Do not index past end of buffer when checking heuristic in error index syntax highlighter](https://www.github.com/rust-lang/rust/issues/156344)
  * `156552`: [Clippy subtree update](https://www.github.com/rust-lang/rust/issues/156552)
* `138995`: [Split the node_id_to_def_id table into a per-owner table](https://www.github.com/rust-lang/rust/issues/138995)
* `156546`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156546)
  * `156543`: [Update rustbook dependencies to remove windows-targets dependency](https://www.github.com/rust-lang/rust/issues/156543)
  * `156536`: [`reveal_actual_level` improvements](https://www.github.com/rust-lang/rust/issues/156536)
  * `156425`: [Fix unused assignments in diverging branches](https://www.github.com/rust-lang/rust/issues/156425)
  * `155815`: [Add Swift function call ABI](https://www.github.com/rust-lang/rust/issues/155815)
* `156535`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156535)
  * `156325`: [Don't treat const param default as projection](https://www.github.com/rust-lang/rust/issues/156325)
  * `156524`: [Remove the dummy `PreCodegen` mir-opt pass, and use `runtime-optimized` instead](https://www.github.com/rust-lang/rust/issues/156524)
  * `156513`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156513)
  * `156504`: [bootstrap: remap windows-style OUT_DIR paths](https://www.github.com/rust-lang/rust/issues/156504)
  * `156472`: [Add support for Zprint-codegen-stats-json](https://www.github.com/rust-lang/rust/issues/156472)
* `156224`: [Unnormalized migration: assert_fully_normalized, struct_tail, and `field.ty`](https://www.github.com/rust-lang/rust/issues/156224)
* `156506`: [Rollup of 6 pull requests](https://www.github.com/rust-lang/rust/issues/156506)
  * `156502`: [Give an example of a Ctor in the doc-comments](https://www.github.com/rust-lang/rust/issues/156502)
  * `156284`: [resolve: Fix a false positive "cannot reexport" error for ambiguous glob sets](https://www.github.com/rust-lang/rust/issues/156284)
  * `156145`: [Move tests cast](https://www.github.com/rust-lang/rust/issues/156145)
  * `156431`: [Move `std::io::util` to `core::io`](https://www.github.com/rust-lang/rust/issues/156431)
  * `156428`: [Move `std::io::Cursor` to `core::io`](https://www.github.com/rust-lang/rust/issues/156428)
  * `156287`: [move more compiler crates away from `box_patterns` ](https://www.github.com/rust-lang/rust/issues/156287)
* `156483`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156483)
  * `156479`: [fix missing space in Rc::decrement_strong_count docs](https://www.github.com/rust-lang/rust/issues/156479)
  * `154918`: [Fix elided lifetime resolution & trait object lifetime defaulting for enum variant paths](https://www.github.com/rust-lang/rust/issues/154918)
  * `156393`: [enable more f16/f128 tests in Miri](https://www.github.com/rust-lang/rust/issues/156393)
  * `154754`: [Add Enzyme to build-manifest and rustup](https://www.github.com/rust-lang/rust/issues/154754)
* `155887`: [-Zassumptions-on-binders](https://www.github.com/rust-lang/rust/issues/155887)
* `156473`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156473)
  * `156466`: [Refactor `CheckAttrVisitor` so rustfmt can format it.](https://www.github.com/rust-lang/rust/issues/156466)
  * `156462`: [LLVM 23: Accept float (instead of hex) literals in codegen tests](https://www.github.com/rust-lang/rust/issues/156462)
  * `156461`: [LLVM 23: Specify `returnaddress` intrinsic return type](https://www.github.com/rust-lang/rust/issues/156461)
  * `156442`: [Show intrinsics::gpu in docs](https://www.github.com/rust-lang/rust/issues/156442)
  * `156022`: [rustdoc: Fix cosmetic issues when reporting unresolved paths in `broken_intra_doc_links`](https://www.github.com/rust-lang/rust/issues/156022)
  * `155184`: [ Have arrays' `drop_glue` just unsize and call the slice version](https://www.github.com/rust-lang/rust/issues/155184)
  * `155169`: [jsondoclint: simplify code using idiomatic Rust](https://www.github.com/rust-lang/rust/issues/155169)
  * `147672`: [LLBC-linker: Do not strip debug symbols for the nvptx target anymore](https://www.github.com/rust-lang/rust/issues/147672)
  * `156429`: [Simplify `intrinsic::raw_eq` in MIR when possible](https://www.github.com/rust-lang/rust/issues/156429)
  * `155023`: [Introduce move expressions (`move($expr)`) ](https://www.github.com/rust-lang/rust/issues/155023)
  * `156448`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156448)
* `156441`: [Rollup of 13 pull requests](https://www.github.com/rust-lang/rust/issues/156441)
  * `156426`: [Fix unwanted "Available on XX-bit only" in libcore integers](https://www.github.com/rust-lang/rust/issues/156426)
  * `156411`: [bootstrap: Don't panic on `x install --set build.extended=true`](https://www.github.com/rust-lang/rust/issues/156411)
  * `156392`: [Improve doc comments for f32::ceil() and f32::floor()](https://www.github.com/rust-lang/rust/issues/156392)
  * `156384`: [Remove some dead code for dumping MIR for a single DefId](https://www.github.com/rust-lang/rust/issues/156384)
  * `156372`: [remove allows_weak_linkage target spec flag](https://www.github.com/rust-lang/rust/issues/156372)
  * `156282`: [Update `sysinfo` version to `0.39.0`](https://www.github.com/rust-lang/rust/issues/156282)
  * `155946`: [Refuse to push changes with a dirty git client](https://www.github.com/rust-lang/rust/issues/155946)
  * `156406`: [resolve: Module-related refactorings](https://www.github.com/rust-lang/rust/issues/156406)
  * `156375`: [kernel_copy tests: properly join background threads](https://www.github.com/rust-lang/rust/issues/156375)
  * `156147`: [Update ICU4X to 2.2](https://www.github.com/rust-lang/rust/issues/156147)
  * `156389`: [prepare fs tests for miri](https://www.github.com/rust-lang/rust/issues/156389)
  * `156357`: [tests: ip*_properties: avoid parsing the IP over and over again](https://www.github.com/rust-lang/rust/issues/156357)
  * `156437`: [`rust-analyzer` subtree update](https://www.github.com/rust-lang/rust/issues/156437)
* `153975`: [remove forever-deprecated and hidden `f64` methods](https://www.github.com/rust-lang/rust/issues/153975)
* `156405`: [Rollup of 10 pull requests](https://www.github.com/rust-lang/rust/issues/156405)
  * `156368`: [Fix invalid unreachable in is_known_valid_scrutinee for Reborrow](https://www.github.com/rust-lang/rust/issues/156368)
  * `156365`: [stream_send_recv_stress tests: wait for threads to finish](https://www.github.com/rust-lang/rust/issues/156365)
  * `156192`: [core: Replace `ptr::slice_from_raw_parts` with `slice::from_raw_parts`](https://www.github.com/rust-lang/rust/issues/156192)
  * `156129`: [compiletest: Migrate from `PassMode`/`FailMode` to `PassFailMode`](https://www.github.com/rust-lang/rust/issues/156129)
  * `156387`: [std fs tests: avoid matching on OS-provided error string](https://www.github.com/rust-lang/rust/issues/156387)
  * `156323`: [Handle --print=backend-has-mnemonic in cg_clif](https://www.github.com/rust-lang/rust/issues/156323)
  * `155982`: [Fix closure HIR span context mismatch](https://www.github.com/rust-lang/rust/issues/155982)
  * `155679`: [rustdoc: Reify emission types](https://www.github.com/rust-lang/rust/issues/155679)
  * `154972`: [Implement `core::arch::return_address` and tests](https://www.github.com/rust-lang/rust/issues/154972)
  * `156394`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156394)
* `144537`: [Add `Drop::pin_drop` for pinned drops](https://www.github.com/rust-lang/rust/issues/144537)
* `156185`: [resolve: Evaluate private visibilities eagerly in eff vis computation](https://www.github.com/rust-lang/rust/issues/156185)
* `156378`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156378)
  * `156363`: [`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`](https://www.github.com/rust-lang/rust/issues/156363)
  * `156133`: [mark some panicking methods around Duration as track_caller](https://www.github.com/rust-lang/rust/issues/156133)
  * `156107`: [remove turbofish notation + use None / Some instead of Option:: (in match documentation)](https://www.github.com/rust-lang/rust/issues/156107)
  * `155817`: [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://www.github.com/rust-lang/rust/issues/155817)
  * `155515`: [error on empty `export_name`](https://www.github.com/rust-lang/rust/issues/155515)
  * `155188`: [Add regression test for issue 144329](https://www.github.com/rust-lang/rust/issues/155188)
  * `156169`: [Change `SwitchInt` handling in dataflow analysis.](https://www.github.com/rust-lang/rust/issues/156169)
  * `156006`: [Update a bunch of bootstrap dependencies to remove windows-target](https://www.github.com/rust-lang/rust/issues/156006)
  * `155970`: [Add mention of sendfile(2) and splice(2) to fs::copy() documentation.](https://www.github.com/rust-lang/rust/issues/155970)
  * `155705`: [Add `str::word_to_titlecase()` to `alloc`](https://www.github.com/rust-lang/rust/issues/155705)
  * `149362`: [Add Command::get_resolved_envs](https://www.github.com/rust-lang/rust/issues/149362)
* `148214`: [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://www.github.com/rust-lang/rust/issues/148214)
* `155321`: [`BufWriter`: Make the soundness of `BorrowedBuf` usage clearer.](https://www.github.com/rust-lang/rust/issues/155321)
* `156361`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156361)
  * `156353`: [resolve: Set correct parent and expansion for `self` declarations](https://www.github.com/rust-lang/rust/issues/156353)
  * `156235`: [fix: Guard SizeSkeleton::compute against stack overflow](https://www.github.com/rust-lang/rust/issues/156235)
  * `156124`: [Make stable hashing names consistent (part 2)](https://www.github.com/rust-lang/rust/issues/156124)
  * `156359`: [use `cfg_select!` in integer `{to, from}_{le, be}`](https://www.github.com/rust-lang/rust/issues/156359)
  * `156354`: [Update example code of `std::array::from_fn`](https://www.github.com/rust-lang/rust/issues/156354)
* `156351`: [Update cargo submodule](https://www.github.com/rust-lang/rust/issues/156351)
* `156297`: [Implement some trait for next solver's lang item enums](https://www.github.com/rust-lang/rust/issues/156297)
* `156341`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156341)
  * `156337`: [rustc-dev-guide subtree update](https://www.github.com/rust-lang/rust/issues/156337)
  * `156333`: [Avoid invalid spans in dotdotdot rest pattern suggestions](https://www.github.com/rust-lang/rust/issues/156333)
  * `156306`: [Move tests consts](https://www.github.com/rust-lang/rust/issues/156306)
  * `156244`: [fix incorrect suggestions in private import diagnostic](https://www.github.com/rust-lang/rust/issues/156244)
  * `156141`: [Resolve some cases of #132279 by using the right typing mode in the next solver](https://www.github.com/rust-lang/rust/issues/156141)
* `156324`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156324)
  * `156301`: [Avoid ICE when suggesting as_ref for ill-typed closure receivers](https://www.github.com/rust-lang/rust/issues/156301)
  * `156291`: [Treat MSVC "performing full link" message as informational](https://www.github.com/rust-lang/rust/issues/156291)
  * `156038`: [turn `compute_goal_fast_path` into a single match](https://www.github.com/rust-lang/rust/issues/156038)
  * `156246`: [Introduce a `RerunNonErased` error type mirroring `NoSolution`, to better track when we're bailing](https://www.github.com/rust-lang/rust/issues/156246)


Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
Co-authored-by: workflows-rust-analyzer[bot] <223433972+workflows-rust-analyzer[bot]@users.noreply.github.com>
Co-authored-by: Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com>
Co-authored-by: bit-aloo <sshourya17@gmail.com>
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
Co-authored-by: Tony Wu <tonywu6@protonmail.com>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
@bors-ferrocene

Copy link
Copy Markdown
Contributor

Build failed:

  • full

@Hoverbear

Copy link
Copy Markdown
Member

bors merge

bors-ferrocene Bot added a commit that referenced this pull request May 22, 2026
2375: Automated pull from upstream `HEAD` r=Hoverbear a=ferrocene-automations[bot]

:warning: **The automation reported these warnings:** :warning:

* There are merge conflicts in this PR. Merge conflict markers have been committed.
* Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

* `156559`: [Rollup of 7 pull requests](https://www.github.com/rust-lang/rust/issues/156559)
  * `156540`: [use `deref_patterns` in `rustdoc` instead of `box_patterns`](https://www.github.com/rust-lang/rust/issues/156540)
  * `156539`: [Add `ChildExt::kill_process_group`](https://www.github.com/rust-lang/rust/issues/156539)
  * `156413`: [rustdoc: Correctness & perf improvements to link-to-definition](https://www.github.com/rust-lang/rust/issues/156413)
  * `156260`: [test: suppress deprecation warning](https://www.github.com/rust-lang/rust/issues/156260)
  * `156500`: [Privacy: move macros handling to early stage](https://www.github.com/rust-lang/rust/issues/156500)
  * `156344`: [Do not index past end of buffer when checking heuristic in error index syntax highlighter](https://www.github.com/rust-lang/rust/issues/156344)
  * `156552`: [Clippy subtree update](https://www.github.com/rust-lang/rust/issues/156552)
* `138995`: [Split the node_id_to_def_id table into a per-owner table](https://www.github.com/rust-lang/rust/issues/138995)
* `156546`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156546)
  * `156543`: [Update rustbook dependencies to remove windows-targets dependency](https://www.github.com/rust-lang/rust/issues/156543)
  * `156536`: [`reveal_actual_level` improvements](https://www.github.com/rust-lang/rust/issues/156536)
  * `156425`: [Fix unused assignments in diverging branches](https://www.github.com/rust-lang/rust/issues/156425)
  * `155815`: [Add Swift function call ABI](https://www.github.com/rust-lang/rust/issues/155815)
* `156535`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156535)
  * `156325`: [Don't treat const param default as projection](https://www.github.com/rust-lang/rust/issues/156325)
  * `156524`: [Remove the dummy `PreCodegen` mir-opt pass, and use `runtime-optimized` instead](https://www.github.com/rust-lang/rust/issues/156524)
  * `156513`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156513)
  * `156504`: [bootstrap: remap windows-style OUT_DIR paths](https://www.github.com/rust-lang/rust/issues/156504)
  * `156472`: [Add support for Zprint-codegen-stats-json](https://www.github.com/rust-lang/rust/issues/156472)
* `156224`: [Unnormalized migration: assert_fully_normalized, struct_tail, and `field.ty`](https://www.github.com/rust-lang/rust/issues/156224)
* `156506`: [Rollup of 6 pull requests](https://www.github.com/rust-lang/rust/issues/156506)
  * `156502`: [Give an example of a Ctor in the doc-comments](https://www.github.com/rust-lang/rust/issues/156502)
  * `156284`: [resolve: Fix a false positive "cannot reexport" error for ambiguous glob sets](https://www.github.com/rust-lang/rust/issues/156284)
  * `156145`: [Move tests cast](https://www.github.com/rust-lang/rust/issues/156145)
  * `156431`: [Move `std::io::util` to `core::io`](https://www.github.com/rust-lang/rust/issues/156431)
  * `156428`: [Move `std::io::Cursor` to `core::io`](https://www.github.com/rust-lang/rust/issues/156428)
  * `156287`: [move more compiler crates away from `box_patterns` ](https://www.github.com/rust-lang/rust/issues/156287)
* `156483`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156483)
  * `156479`: [fix missing space in Rc::decrement_strong_count docs](https://www.github.com/rust-lang/rust/issues/156479)
  * `154918`: [Fix elided lifetime resolution & trait object lifetime defaulting for enum variant paths](https://www.github.com/rust-lang/rust/issues/154918)
  * `156393`: [enable more f16/f128 tests in Miri](https://www.github.com/rust-lang/rust/issues/156393)
  * `154754`: [Add Enzyme to build-manifest and rustup](https://www.github.com/rust-lang/rust/issues/154754)
* `155887`: [-Zassumptions-on-binders](https://www.github.com/rust-lang/rust/issues/155887)
* `156473`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156473)
  * `156466`: [Refactor `CheckAttrVisitor` so rustfmt can format it.](https://www.github.com/rust-lang/rust/issues/156466)
  * `156462`: [LLVM 23: Accept float (instead of hex) literals in codegen tests](https://www.github.com/rust-lang/rust/issues/156462)
  * `156461`: [LLVM 23: Specify `returnaddress` intrinsic return type](https://www.github.com/rust-lang/rust/issues/156461)
  * `156442`: [Show intrinsics::gpu in docs](https://www.github.com/rust-lang/rust/issues/156442)
  * `156022`: [rustdoc: Fix cosmetic issues when reporting unresolved paths in `broken_intra_doc_links`](https://www.github.com/rust-lang/rust/issues/156022)
  * `155184`: [ Have arrays' `drop_glue` just unsize and call the slice version](https://www.github.com/rust-lang/rust/issues/155184)
  * `155169`: [jsondoclint: simplify code using idiomatic Rust](https://www.github.com/rust-lang/rust/issues/155169)
  * `147672`: [LLBC-linker: Do not strip debug symbols for the nvptx target anymore](https://www.github.com/rust-lang/rust/issues/147672)
  * `156429`: [Simplify `intrinsic::raw_eq` in MIR when possible](https://www.github.com/rust-lang/rust/issues/156429)
  * `155023`: [Introduce move expressions (`move($expr)`) ](https://www.github.com/rust-lang/rust/issues/155023)
  * `156448`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156448)
* `156441`: [Rollup of 13 pull requests](https://www.github.com/rust-lang/rust/issues/156441)
  * `156426`: [Fix unwanted "Available on XX-bit only" in libcore integers](https://www.github.com/rust-lang/rust/issues/156426)
  * `156411`: [bootstrap: Don't panic on `x install --set build.extended=true`](https://www.github.com/rust-lang/rust/issues/156411)
  * `156392`: [Improve doc comments for f32::ceil() and f32::floor()](https://www.github.com/rust-lang/rust/issues/156392)
  * `156384`: [Remove some dead code for dumping MIR for a single DefId](https://www.github.com/rust-lang/rust/issues/156384)
  * `156372`: [remove allows_weak_linkage target spec flag](https://www.github.com/rust-lang/rust/issues/156372)
  * `156282`: [Update `sysinfo` version to `0.39.0`](https://www.github.com/rust-lang/rust/issues/156282)
  * `155946`: [Refuse to push changes with a dirty git client](https://www.github.com/rust-lang/rust/issues/155946)
  * `156406`: [resolve: Module-related refactorings](https://www.github.com/rust-lang/rust/issues/156406)
  * `156375`: [kernel_copy tests: properly join background threads](https://www.github.com/rust-lang/rust/issues/156375)
  * `156147`: [Update ICU4X to 2.2](https://www.github.com/rust-lang/rust/issues/156147)
  * `156389`: [prepare fs tests for miri](https://www.github.com/rust-lang/rust/issues/156389)
  * `156357`: [tests: ip*_properties: avoid parsing the IP over and over again](https://www.github.com/rust-lang/rust/issues/156357)
  * `156437`: [`rust-analyzer` subtree update](https://www.github.com/rust-lang/rust/issues/156437)
* `153975`: [remove forever-deprecated and hidden `f64` methods](https://www.github.com/rust-lang/rust/issues/153975)
* `156405`: [Rollup of 10 pull requests](https://www.github.com/rust-lang/rust/issues/156405)
  * `156368`: [Fix invalid unreachable in is_known_valid_scrutinee for Reborrow](https://www.github.com/rust-lang/rust/issues/156368)
  * `156365`: [stream_send_recv_stress tests: wait for threads to finish](https://www.github.com/rust-lang/rust/issues/156365)
  * `156192`: [core: Replace `ptr::slice_from_raw_parts` with `slice::from_raw_parts`](https://www.github.com/rust-lang/rust/issues/156192)
  * `156129`: [compiletest: Migrate from `PassMode`/`FailMode` to `PassFailMode`](https://www.github.com/rust-lang/rust/issues/156129)
  * `156387`: [std fs tests: avoid matching on OS-provided error string](https://www.github.com/rust-lang/rust/issues/156387)
  * `156323`: [Handle --print=backend-has-mnemonic in cg_clif](https://www.github.com/rust-lang/rust/issues/156323)
  * `155982`: [Fix closure HIR span context mismatch](https://www.github.com/rust-lang/rust/issues/155982)
  * `155679`: [rustdoc: Reify emission types](https://www.github.com/rust-lang/rust/issues/155679)
  * `154972`: [Implement `core::arch::return_address` and tests](https://www.github.com/rust-lang/rust/issues/154972)
  * `156394`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156394)
* `144537`: [Add `Drop::pin_drop` for pinned drops](https://www.github.com/rust-lang/rust/issues/144537)
* `156185`: [resolve: Evaluate private visibilities eagerly in eff vis computation](https://www.github.com/rust-lang/rust/issues/156185)
* `156378`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156378)
  * `156363`: [`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`](https://www.github.com/rust-lang/rust/issues/156363)
  * `156133`: [mark some panicking methods around Duration as track_caller](https://www.github.com/rust-lang/rust/issues/156133)
  * `156107`: [remove turbofish notation + use None / Some instead of Option:: (in match documentation)](https://www.github.com/rust-lang/rust/issues/156107)
  * `155817`: [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://www.github.com/rust-lang/rust/issues/155817)
  * `155515`: [error on empty `export_name`](https://www.github.com/rust-lang/rust/issues/155515)
  * `155188`: [Add regression test for issue 144329](https://www.github.com/rust-lang/rust/issues/155188)
  * `156169`: [Change `SwitchInt` handling in dataflow analysis.](https://www.github.com/rust-lang/rust/issues/156169)
  * `156006`: [Update a bunch of bootstrap dependencies to remove windows-target](https://www.github.com/rust-lang/rust/issues/156006)
  * `155970`: [Add mention of sendfile(2) and splice(2) to fs::copy() documentation.](https://www.github.com/rust-lang/rust/issues/155970)
  * `155705`: [Add `str::word_to_titlecase()` to `alloc`](https://www.github.com/rust-lang/rust/issues/155705)
  * `149362`: [Add Command::get_resolved_envs](https://www.github.com/rust-lang/rust/issues/149362)
* `148214`: [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://www.github.com/rust-lang/rust/issues/148214)
* `155321`: [`BufWriter`: Make the soundness of `BorrowedBuf` usage clearer.](https://www.github.com/rust-lang/rust/issues/155321)
* `156361`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156361)
  * `156353`: [resolve: Set correct parent and expansion for `self` declarations](https://www.github.com/rust-lang/rust/issues/156353)
  * `156235`: [fix: Guard SizeSkeleton::compute against stack overflow](https://www.github.com/rust-lang/rust/issues/156235)
  * `156124`: [Make stable hashing names consistent (part 2)](https://www.github.com/rust-lang/rust/issues/156124)
  * `156359`: [use `cfg_select!` in integer `{to, from}_{le, be}`](https://www.github.com/rust-lang/rust/issues/156359)
  * `156354`: [Update example code of `std::array::from_fn`](https://www.github.com/rust-lang/rust/issues/156354)
* `156351`: [Update cargo submodule](https://www.github.com/rust-lang/rust/issues/156351)
* `156297`: [Implement some trait for next solver's lang item enums](https://www.github.com/rust-lang/rust/issues/156297)
* `156341`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156341)
  * `156337`: [rustc-dev-guide subtree update](https://www.github.com/rust-lang/rust/issues/156337)
  * `156333`: [Avoid invalid spans in dotdotdot rest pattern suggestions](https://www.github.com/rust-lang/rust/issues/156333)
  * `156306`: [Move tests consts](https://www.github.com/rust-lang/rust/issues/156306)
  * `156244`: [fix incorrect suggestions in private import diagnostic](https://www.github.com/rust-lang/rust/issues/156244)
  * `156141`: [Resolve some cases of #132279 by using the right typing mode in the next solver](https://www.github.com/rust-lang/rust/issues/156141)
* `156324`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156324)
  * `156301`: [Avoid ICE when suggesting as_ref for ill-typed closure receivers](https://www.github.com/rust-lang/rust/issues/156301)
  * `156291`: [Treat MSVC "performing full link" message as informational](https://www.github.com/rust-lang/rust/issues/156291)
  * `156038`: [turn `compute_goal_fast_path` into a single match](https://www.github.com/rust-lang/rust/issues/156038)
  * `156246`: [Introduce a `RerunNonErased` error type mirroring `NoSolution`, to better track when we're bailing](https://www.github.com/rust-lang/rust/issues/156246)


Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
Co-authored-by: workflows-rust-analyzer[bot] <223433972+workflows-rust-analyzer[bot]@users.noreply.github.com>
Co-authored-by: Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com>
Co-authored-by: bit-aloo <sshourya17@gmail.com>
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
Co-authored-by: Tony Wu <tonywu6@protonmail.com>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
@bors-ferrocene

Copy link
Copy Markdown
Contributor

Build failed:

  • full

@Hoverbear

Copy link
Copy Markdown
Member

bors merge

bors-ferrocene Bot added a commit that referenced this pull request May 22, 2026
2375: Automated pull from upstream `HEAD` r=Hoverbear a=ferrocene-automations[bot]

:warning: **The automation reported these warnings:** :warning:

* There are merge conflicts in this PR. Merge conflict markers have been committed.
* Couldn't regenerate the symbol report. Please run './x test certified-core-symbols --bless' after fixing the conflicts.

This PR pulls the following changes from the upstream repository:

* `156559`: [Rollup of 7 pull requests](https://www.github.com/rust-lang/rust/issues/156559)
  * `156540`: [use `deref_patterns` in `rustdoc` instead of `box_patterns`](https://www.github.com/rust-lang/rust/issues/156540)
  * `156539`: [Add `ChildExt::kill_process_group`](https://www.github.com/rust-lang/rust/issues/156539)
  * `156413`: [rustdoc: Correctness & perf improvements to link-to-definition](https://www.github.com/rust-lang/rust/issues/156413)
  * `156260`: [test: suppress deprecation warning](https://www.github.com/rust-lang/rust/issues/156260)
  * `156500`: [Privacy: move macros handling to early stage](https://www.github.com/rust-lang/rust/issues/156500)
  * `156344`: [Do not index past end of buffer when checking heuristic in error index syntax highlighter](https://www.github.com/rust-lang/rust/issues/156344)
  * `156552`: [Clippy subtree update](https://www.github.com/rust-lang/rust/issues/156552)
* `138995`: [Split the node_id_to_def_id table into a per-owner table](https://www.github.com/rust-lang/rust/issues/138995)
* `156546`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156546)
  * `156543`: [Update rustbook dependencies to remove windows-targets dependency](https://www.github.com/rust-lang/rust/issues/156543)
  * `156536`: [`reveal_actual_level` improvements](https://www.github.com/rust-lang/rust/issues/156536)
  * `156425`: [Fix unused assignments in diverging branches](https://www.github.com/rust-lang/rust/issues/156425)
  * `155815`: [Add Swift function call ABI](https://www.github.com/rust-lang/rust/issues/155815)
* `156535`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156535)
  * `156325`: [Don't treat const param default as projection](https://www.github.com/rust-lang/rust/issues/156325)
  * `156524`: [Remove the dummy `PreCodegen` mir-opt pass, and use `runtime-optimized` instead](https://www.github.com/rust-lang/rust/issues/156524)
  * `156513`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156513)
  * `156504`: [bootstrap: remap windows-style OUT_DIR paths](https://www.github.com/rust-lang/rust/issues/156504)
  * `156472`: [Add support for Zprint-codegen-stats-json](https://www.github.com/rust-lang/rust/issues/156472)
* `156224`: [Unnormalized migration: assert_fully_normalized, struct_tail, and `field.ty`](https://www.github.com/rust-lang/rust/issues/156224)
* `156506`: [Rollup of 6 pull requests](https://www.github.com/rust-lang/rust/issues/156506)
  * `156502`: [Give an example of a Ctor in the doc-comments](https://www.github.com/rust-lang/rust/issues/156502)
  * `156284`: [resolve: Fix a false positive "cannot reexport" error for ambiguous glob sets](https://www.github.com/rust-lang/rust/issues/156284)
  * `156145`: [Move tests cast](https://www.github.com/rust-lang/rust/issues/156145)
  * `156431`: [Move `std::io::util` to `core::io`](https://www.github.com/rust-lang/rust/issues/156431)
  * `156428`: [Move `std::io::Cursor` to `core::io`](https://www.github.com/rust-lang/rust/issues/156428)
  * `156287`: [move more compiler crates away from `box_patterns` ](https://www.github.com/rust-lang/rust/issues/156287)
* `156483`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156483)
  * `156479`: [fix missing space in Rc::decrement_strong_count docs](https://www.github.com/rust-lang/rust/issues/156479)
  * `154918`: [Fix elided lifetime resolution & trait object lifetime defaulting for enum variant paths](https://www.github.com/rust-lang/rust/issues/154918)
  * `156393`: [enable more f16/f128 tests in Miri](https://www.github.com/rust-lang/rust/issues/156393)
  * `154754`: [Add Enzyme to build-manifest and rustup](https://www.github.com/rust-lang/rust/issues/154754)
* `155887`: [-Zassumptions-on-binders](https://www.github.com/rust-lang/rust/issues/155887)
* `156473`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156473)
  * `156466`: [Refactor `CheckAttrVisitor` so rustfmt can format it.](https://www.github.com/rust-lang/rust/issues/156466)
  * `156462`: [LLVM 23: Accept float (instead of hex) literals in codegen tests](https://www.github.com/rust-lang/rust/issues/156462)
  * `156461`: [LLVM 23: Specify `returnaddress` intrinsic return type](https://www.github.com/rust-lang/rust/issues/156461)
  * `156442`: [Show intrinsics::gpu in docs](https://www.github.com/rust-lang/rust/issues/156442)
  * `156022`: [rustdoc: Fix cosmetic issues when reporting unresolved paths in `broken_intra_doc_links`](https://www.github.com/rust-lang/rust/issues/156022)
  * `155184`: [ Have arrays' `drop_glue` just unsize and call the slice version](https://www.github.com/rust-lang/rust/issues/155184)
  * `155169`: [jsondoclint: simplify code using idiomatic Rust](https://www.github.com/rust-lang/rust/issues/155169)
  * `147672`: [LLBC-linker: Do not strip debug symbols for the nvptx target anymore](https://www.github.com/rust-lang/rust/issues/147672)
  * `156429`: [Simplify `intrinsic::raw_eq` in MIR when possible](https://www.github.com/rust-lang/rust/issues/156429)
  * `155023`: [Introduce move expressions (`move($expr)`) ](https://www.github.com/rust-lang/rust/issues/155023)
  * `156448`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156448)
* `156441`: [Rollup of 13 pull requests](https://www.github.com/rust-lang/rust/issues/156441)
  * `156426`: [Fix unwanted "Available on XX-bit only" in libcore integers](https://www.github.com/rust-lang/rust/issues/156426)
  * `156411`: [bootstrap: Don't panic on `x install --set build.extended=true`](https://www.github.com/rust-lang/rust/issues/156411)
  * `156392`: [Improve doc comments for f32::ceil() and f32::floor()](https://www.github.com/rust-lang/rust/issues/156392)
  * `156384`: [Remove some dead code for dumping MIR for a single DefId](https://www.github.com/rust-lang/rust/issues/156384)
  * `156372`: [remove allows_weak_linkage target spec flag](https://www.github.com/rust-lang/rust/issues/156372)
  * `156282`: [Update `sysinfo` version to `0.39.0`](https://www.github.com/rust-lang/rust/issues/156282)
  * `155946`: [Refuse to push changes with a dirty git client](https://www.github.com/rust-lang/rust/issues/155946)
  * `156406`: [resolve: Module-related refactorings](https://www.github.com/rust-lang/rust/issues/156406)
  * `156375`: [kernel_copy tests: properly join background threads](https://www.github.com/rust-lang/rust/issues/156375)
  * `156147`: [Update ICU4X to 2.2](https://www.github.com/rust-lang/rust/issues/156147)
  * `156389`: [prepare fs tests for miri](https://www.github.com/rust-lang/rust/issues/156389)
  * `156357`: [tests: ip*_properties: avoid parsing the IP over and over again](https://www.github.com/rust-lang/rust/issues/156357)
  * `156437`: [`rust-analyzer` subtree update](https://www.github.com/rust-lang/rust/issues/156437)
* `153975`: [remove forever-deprecated and hidden `f64` methods](https://www.github.com/rust-lang/rust/issues/153975)
* `156405`: [Rollup of 10 pull requests](https://www.github.com/rust-lang/rust/issues/156405)
  * `156368`: [Fix invalid unreachable in is_known_valid_scrutinee for Reborrow](https://www.github.com/rust-lang/rust/issues/156368)
  * `156365`: [stream_send_recv_stress tests: wait for threads to finish](https://www.github.com/rust-lang/rust/issues/156365)
  * `156192`: [core: Replace `ptr::slice_from_raw_parts` with `slice::from_raw_parts`](https://www.github.com/rust-lang/rust/issues/156192)
  * `156129`: [compiletest: Migrate from `PassMode`/`FailMode` to `PassFailMode`](https://www.github.com/rust-lang/rust/issues/156129)
  * `156387`: [std fs tests: avoid matching on OS-provided error string](https://www.github.com/rust-lang/rust/issues/156387)
  * `156323`: [Handle --print=backend-has-mnemonic in cg_clif](https://www.github.com/rust-lang/rust/issues/156323)
  * `155982`: [Fix closure HIR span context mismatch](https://www.github.com/rust-lang/rust/issues/155982)
  * `155679`: [rustdoc: Reify emission types](https://www.github.com/rust-lang/rust/issues/155679)
  * `154972`: [Implement `core::arch::return_address` and tests](https://www.github.com/rust-lang/rust/issues/154972)
  * `156394`: [miri subtree update](https://www.github.com/rust-lang/rust/issues/156394)
* `144537`: [Add `Drop::pin_drop` for pinned drops](https://www.github.com/rust-lang/rust/issues/144537)
* `156185`: [resolve: Evaluate private visibilities eagerly in eff vis computation](https://www.github.com/rust-lang/rust/issues/156185)
* `156378`: [Rollup of 11 pull requests](https://www.github.com/rust-lang/rust/issues/156378)
  * `156363`: [`rustc_attr_parsing`: add `AcceptContext::expect_string_literal`](https://www.github.com/rust-lang/rust/issues/156363)
  * `156133`: [mark some panicking methods around Duration as track_caller](https://www.github.com/rust-lang/rust/issues/156133)
  * `156107`: [remove turbofish notation + use None / Some instead of Option:: (in match documentation)](https://www.github.com/rust-lang/rust/issues/156107)
  * `155817`: [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://www.github.com/rust-lang/rust/issues/155817)
  * `155515`: [error on empty `export_name`](https://www.github.com/rust-lang/rust/issues/155515)
  * `155188`: [Add regression test for issue 144329](https://www.github.com/rust-lang/rust/issues/155188)
  * `156169`: [Change `SwitchInt` handling in dataflow analysis.](https://www.github.com/rust-lang/rust/issues/156169)
  * `156006`: [Update a bunch of bootstrap dependencies to remove windows-target](https://www.github.com/rust-lang/rust/issues/156006)
  * `155970`: [Add mention of sendfile(2) and splice(2) to fs::copy() documentation.](https://www.github.com/rust-lang/rust/issues/155970)
  * `155705`: [Add `str::word_to_titlecase()` to `alloc`](https://www.github.com/rust-lang/rust/issues/155705)
  * `149362`: [Add Command::get_resolved_envs](https://www.github.com/rust-lang/rust/issues/149362)
* `148214`: [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://www.github.com/rust-lang/rust/issues/148214)
* `155321`: [`BufWriter`: Make the soundness of `BorrowedBuf` usage clearer.](https://www.github.com/rust-lang/rust/issues/155321)
* `156361`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156361)
  * `156353`: [resolve: Set correct parent and expansion for `self` declarations](https://www.github.com/rust-lang/rust/issues/156353)
  * `156235`: [fix: Guard SizeSkeleton::compute against stack overflow](https://www.github.com/rust-lang/rust/issues/156235)
  * `156124`: [Make stable hashing names consistent (part 2)](https://www.github.com/rust-lang/rust/issues/156124)
  * `156359`: [use `cfg_select!` in integer `{to, from}_{le, be}`](https://www.github.com/rust-lang/rust/issues/156359)
  * `156354`: [Update example code of `std::array::from_fn`](https://www.github.com/rust-lang/rust/issues/156354)
* `156351`: [Update cargo submodule](https://www.github.com/rust-lang/rust/issues/156351)
* `156297`: [Implement some trait for next solver's lang item enums](https://www.github.com/rust-lang/rust/issues/156297)
* `156341`: [Rollup of 5 pull requests](https://www.github.com/rust-lang/rust/issues/156341)
  * `156337`: [rustc-dev-guide subtree update](https://www.github.com/rust-lang/rust/issues/156337)
  * `156333`: [Avoid invalid spans in dotdotdot rest pattern suggestions](https://www.github.com/rust-lang/rust/issues/156333)
  * `156306`: [Move tests consts](https://www.github.com/rust-lang/rust/issues/156306)
  * `156244`: [fix incorrect suggestions in private import diagnostic](https://www.github.com/rust-lang/rust/issues/156244)
  * `156141`: [Resolve some cases of #132279 by using the right typing mode in the next solver](https://www.github.com/rust-lang/rust/issues/156141)
* `156324`: [Rollup of 4 pull requests](https://www.github.com/rust-lang/rust/issues/156324)
  * `156301`: [Avoid ICE when suggesting as_ref for ill-typed closure receivers](https://www.github.com/rust-lang/rust/issues/156301)
  * `156291`: [Treat MSVC "performing full link" message as informational](https://www.github.com/rust-lang/rust/issues/156291)
  * `156038`: [turn `compute_goal_fast_path` into a single match](https://www.github.com/rust-lang/rust/issues/156038)
  * `156246`: [Introduce a `RerunNonErased` error type mirroring `NoSolution`, to better track when we're bailing](https://www.github.com/rust-lang/rust/issues/156246)


Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Onyeka Obi <softwareengineerasaservant@isurvivable.cv>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
Co-authored-by: workflows-rust-analyzer[bot] <223433972+workflows-rust-analyzer[bot]@users.noreply.github.com>
Co-authored-by: Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com>
Co-authored-by: bit-aloo <sshourya17@gmail.com>
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
Co-authored-by: Tony Wu <tonywu6@protonmail.com>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
@bors-ferrocene

Copy link
Copy Markdown
Contributor

Build failed:

  • full

@Urhengulas

Copy link
Copy Markdown
Member

bors merge

@bors-ferrocene

Copy link
Copy Markdown
Contributor

Build succeeded:

@bors-ferrocene bors-ferrocene Bot merged commit 510e5c2 into main May 22, 2026
4 checks passed
@bors-ferrocene bors-ferrocene Bot deleted the automation/pull-upstream-HEAD/uejcguym branch May 22, 2026 21:45
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 8, 2026
…r=Mark-Simulacrum

xfs support in `test_rename_directory_to_non_empty_directory`

While running Ferrocene's test suite we use a variety of filesystems, including XFS. Those systems caught a failing test in [a recent upstream pull](ferrocene/ferrocene#2375).

The test failing:

https://github.com/rust-lang/rust/blob/1ea1171c1e537f295225be1c7b67dba46794e6ad/library/std/src/fs/tests.rs#L2141-L2157

It was recently removed from being Windows-only in: rust-lang@a0298aa#diff-0ec4075fea7f5f4cc82c306e975ae7638b1fc500d30c11a83f337a69ef1dfd65L2177

Seemingly on XFS only, the `AlreadyExists` variant is returned instead.

This workaround allows both possible errors. I am unsure at this time if it is a signal of incorrectness in Rust somewhere, but on Python a similar failure can be noted:

```bash
ana@autonoma ~/git/ferrocene/scratch
❯ mkdir blap flap
ana@autonoma ~/git/ferrocene/scratch
❯ touch flap/zap
ana@autonoma ~/git/ferrocene/scratch
❯ python
Python 3.13.13 (main, May 15 2026, 12:38:54) [GCC 15.2.1 20260214] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.rename("blap", "flap")
Traceback (most recent call last):
  File "<python-input-3>", line 1, in <module>
    os.rename("blap", "flap")
    ~~~~~~~~~^^^^^^^^^^^^^^^^
FileExistsError: [Errno 17] File exists: 'blap' -> 'flap'
ana@autonoma ~/git/ferrocene/scratch
❯ cd /tmp/
ana@autonoma /tmp
❯ mkdir blap flap
ana@autonoma /tmp
❯ touch flap/zap
ana@autonoma /tmp
❯ python
Python 3.13.13 (main, May 15 2026, 12:38:54) [GCC 15.2.1 20260214] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.rename("blap", "flap")
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    os.rename("blap", "flap")
    ~~~~~~~~~^^^^^^^^^^^^^^^^
OSError: [Errno 39] Directory not empty: 'blap' -> 'flap'
```

I tested on `ext4`, `tmpfs`, `overlayfs`, `btrfs`, and `xfs`. Only XFS seems to display this error.

## Reproduction

On Linux hosts:

```rust
use clap::Parser;

struct Args {
    /// Destination to try
    #[arg()]
    path: std::path::PathBuf,
}

fn main() {
    let args = Args::parse();

    // Renaming a directory over a non-empty existing directory should fail.
    let tmpdir = std::path::Path::new(&args.path);
    std::fs::create_dir_all(tmpdir).unwrap();

    let source_path = tmpdir.join("source_directory");
    let target_path = tmpdir.join("target_directory");

    std::fs::create_dir(&source_path).unwrap();
    std::fs::create_dir(&target_path).unwrap();

    let target_path_file = target_path.join("target_file.txt");
    std::fs::write(target_path.join("target_file.txt"), b"target hello world").unwrap();
    println!("wrote {target_path_file:?}");

    println!("{source_path:?} -> {target_path:?}");
    let err = std::fs::rename(source_path, target_path).unwrap_err();
    assert_eq!(err.kind(), std::io::ErrorKind::DirectoryNotEmpty);
}
```

```bash
XFS_BLOCK=image-xfs
truncate -s 512M image-xfs
mkfs.xfs -q image-xfs
mkdir mnt-xfs
sudo mount -o loop image-xfs mnt-xfs
sudo chmod 777 mnt-xfs
cargo run -- mnt-xfs/
```

Output:

```
wrote "mnt-xfs/target_directory/target_file.txt"
"mnt-xfs/source_directory" -> "mnt-xfs/target_directory"

thread 'main' (267220) panicked at src/main.rs:30:5:
assertion `left == right` failed
  left: AlreadyExists
 right: DirectoryNotEmpty
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

You can run this test directly:

```bash
./x.py --stage 2 test library/std --target x86_64-unknown-linux-gnu -- fs::tests::test_rename_directory_to_non_empty_directory --nocapture
```
rust-timer added a commit to rust-lang/rust that referenced this pull request Jun 8, 2026
Rollup merge of #156762 - ferrocene:hoverbear/xfs-test-fix, r=Mark-Simulacrum

xfs support in `test_rename_directory_to_non_empty_directory`

While running Ferrocene's test suite we use a variety of filesystems, including XFS. Those systems caught a failing test in [a recent upstream pull](ferrocene/ferrocene#2375).

The test failing:

https://github.com/rust-lang/rust/blob/1ea1171c1e537f295225be1c7b67dba46794e6ad/library/std/src/fs/tests.rs#L2141-L2157

It was recently removed from being Windows-only in: a0298aa#diff-0ec4075fea7f5f4cc82c306e975ae7638b1fc500d30c11a83f337a69ef1dfd65L2177

Seemingly on XFS only, the `AlreadyExists` variant is returned instead.

This workaround allows both possible errors. I am unsure at this time if it is a signal of incorrectness in Rust somewhere, but on Python a similar failure can be noted:

```bash
ana@autonoma ~/git/ferrocene/scratch
❯ mkdir blap flap
ana@autonoma ~/git/ferrocene/scratch
❯ touch flap/zap
ana@autonoma ~/git/ferrocene/scratch
❯ python
Python 3.13.13 (main, May 15 2026, 12:38:54) [GCC 15.2.1 20260214] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.rename("blap", "flap")
Traceback (most recent call last):
  File "<python-input-3>", line 1, in <module>
    os.rename("blap", "flap")
    ~~~~~~~~~^^^^^^^^^^^^^^^^
FileExistsError: [Errno 17] File exists: 'blap' -> 'flap'
ana@autonoma ~/git/ferrocene/scratch
❯ cd /tmp/
ana@autonoma /tmp
❯ mkdir blap flap
ana@autonoma /tmp
❯ touch flap/zap
ana@autonoma /tmp
❯ python
Python 3.13.13 (main, May 15 2026, 12:38:54) [GCC 15.2.1 20260214] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.rename("blap", "flap")
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    os.rename("blap", "flap")
    ~~~~~~~~~^^^^^^^^^^^^^^^^
OSError: [Errno 39] Directory not empty: 'blap' -> 'flap'
```

I tested on `ext4`, `tmpfs`, `overlayfs`, `btrfs`, and `xfs`. Only XFS seems to display this error.

## Reproduction

On Linux hosts:

```rust
use clap::Parser;

struct Args {
    /// Destination to try
    #[arg()]
    path: std::path::PathBuf,
}

fn main() {
    let args = Args::parse();

    // Renaming a directory over a non-empty existing directory should fail.
    let tmpdir = std::path::Path::new(&args.path);
    std::fs::create_dir_all(tmpdir).unwrap();

    let source_path = tmpdir.join("source_directory");
    let target_path = tmpdir.join("target_directory");

    std::fs::create_dir(&source_path).unwrap();
    std::fs::create_dir(&target_path).unwrap();

    let target_path_file = target_path.join("target_file.txt");
    std::fs::write(target_path.join("target_file.txt"), b"target hello world").unwrap();
    println!("wrote {target_path_file:?}");

    println!("{source_path:?} -> {target_path:?}");
    let err = std::fs::rename(source_path, target_path).unwrap_err();
    assert_eq!(err.kind(), std::io::ErrorKind::DirectoryNotEmpty);
}
```

```bash
XFS_BLOCK=image-xfs
truncate -s 512M image-xfs
mkfs.xfs -q image-xfs
mkdir mnt-xfs
sudo mount -o loop image-xfs mnt-xfs
sudo chmod 777 mnt-xfs
cargo run -- mnt-xfs/
```

Output:

```
wrote "mnt-xfs/target_directory/target_file.txt"
"mnt-xfs/source_directory" -> "mnt-xfs/target_directory"

thread 'main' (267220) panicked at src/main.rs:30:5:
assertion `left == right` failed
  left: AlreadyExists
 right: DirectoryNotEmpty
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

You can run this test directly:

```bash
./x.py --stage 2 test library/std --target x86_64-unknown-linux-gnu -- fs::tests::test_rename_directory_to_non_empty_directory --nocapture
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automation Issue or PR created by an automation backport:never PR that should never be backported merged-in:1.97

Projects

None yet

Development

Successfully merging this pull request may close these issues.