Skip to content

Rollup of 6 pull requests - #158558

Closed
jhpratt wants to merge 17 commits into
rust-lang:mainfrom
jhpratt:rollup-o2XVdsC
Closed

Rollup of 6 pull requests#158558
jhpratt wants to merge 17 commits into
rust-lang:mainfrom
jhpratt:rollup-o2XVdsC

Conversation

@jhpratt

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

Rohan-Singlaand others added 17 commits June 18, 2026 15:23
Emit more targeted diagnostics when an input file cannot be opened,
including dedicated messages for common error kinds and typo
suggestions for missing files. Add run-make tests covering NotFound,
PermissionDenied, IsADirectory, and non-existent directory cases.
Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Currently, rustc can emit a FatalError diagnostic during parsing of
literals and tokenstreams. These are handled under the hood as a panic,
which means that proc-macro code needed to catch_unwind if it wanted to
fallibly parse some code. These still emit diagnostics, so in practice
this isn't a full fix, but it at least makes the interface on the macro
side a bit more uniform.
This is primarily motivated by wasm proc macros which can't use
catch_unwind and so this lets the test's output be the same with and
without them.
* refactor: move attribute and keywords docs files to core
* fix references to `std`
* tidy fixes
* ignore doc tests w/ explicit_tail_calls
* revert `unsafe` example and ignore specifically WASM for `become` doc tests
* add explicit note about doube including the docs in `core` and `std`
* missed refactoring of doc test ignore
* conditionally exclude doc-test containing threading for `wasm-wasip1`
* Change exclusion to just `wasi` target_os
Co-authored-by: Justin Schilleman <97192655+jschillem@users.noreply.github.com>
… r=kobzol,mark-simulacrum,bjorn3
bootstrap: fix panic when repo path contains spaces by switching to CARGO_ENCODED_RUSTFLAGS
Fixesrust-lang#158052Closes: rust-lang#156096
## Problem
`./x build` panics with a cryptic assertion error when the repository is
checked out under a directory path containing spaces (e.g.
`/Users/foo/Open Source/rust`):
thread 'main' panicked at src/bootstrap/src/core/builder/cargo.rs:54:9:
assertion left == right failed
left: 2
right: 1
The root cause: when building tools in `ToolRustcPrivate` or `Codegen`
mode, bootstrap calls `llvm-config --libdir` and passes the result as a
`-Clink-arg=-L<path>` rustflag. The `Rustflags::arg()` method asserted
that arguments contain no spaces, but if the repo path has a space the
libdir path inherits it and the assertion fires. The error gives no hint
that the path is the problem.
A secondary bug: `llvm-config --libdir` output has a trailing newline
that was previously stripped accidentally by `RUSTFLAGS` whitespace
splitting. Nothing was trimming it explicitly.
## Fix
Two changes in `src/bootstrap/src/core/builder/cargo.rs`:
1. **Switch `RUSTFLAGS` → `CARGO_ENCODED_RUSTFLAGS`**: Change
`Rustflags` to store args as `Vec<String>` and join with `\x1f`
(ASCII unit separator) when setting the env var. Cargo's
`CARGO_ENCODED_RUSTFLAGS` (stable since Cargo 1.55) uses `\x1f` as
delimiter, which never appears in filesystem paths, so paths with
spaces are handled correctly. The space-based assertion in `arg()` is
removed.
2. **Trim `llvm-config --libdir` output**: Explicitly `.trim()` the
captured stdout so the trailing newline is not included in the linker
search path.
`RUSTDOCFLAGS` is left as-is (space-joined) since no llvm paths are
added to rustdocflags.
cc: @Kobzol
…g, r=bjorn3
Avoid parser panics bubbling out to proc macros
Currently, rustc can emit a FatalError diagnostic during parsing of literals and tokenstreams. These are handled under the hood as a panic, which means that proc-macro code needed to catch_unwind if it wanted to fallibly parse some code. These still emit diagnostics, so in practice this isn't a full fix, but it at least makes the interface on the macro side a bit more uniform. The long-term fix should be to get rid of those FatalErrors (and in general all diagnostics that actually get emitted out during parsing, not just returned), but this seems like a reasonable improvement in the meantime.
This is primarily motivated by wasm proc macros which can't use catch_unwind and so this lets the test's output be the same with and without them.
r? bjorn3
…closure_recovery, r=nnethercote
trait-system: Recover deferred closure calls after errors
fixesrust-lang#157951
this already reported the right errors, then typeck kept going and hit the deferred closure call path. that path assumed it could always find a fn trait impl after closure kind inference. with this repro, the earlier errors mean that lookup can fail, so it should recover instead of iceing.
i think keeping this as recovery is the least surprising fix here. the compiler has already told the user what's wrong, so turning the later invariant into another hard failure doesn't buy much.
also drops the weird e0746 help for this closure case. there's no written ret ty to edit, so suggestions like \impl f\ or \�ox<dyn box::new(f)>\ were just noise. added the next-solver ui test for the repro.
…e, r=nnethercote
rustc: improve diagnostics for file-open failures
Fix: [rust-lang#156070](rust-lang#156070)
…-keywords-to-core, r=GuillaumeGomez
Move attribute and keyword docs from `std` to `core`
Move the documentation for attributes and keywords into the `core` crate. Apart from strictly moving the module, I had to make a few small changes to certain docs to avoid using `std` types when possible, as well as fixing a few suggestions related to linking to primitives.
Pre-requisite for work on rust-lang#157604.
r? @GuillaumeGomez
Verified documentation using:
`./x doc library/core` and `./x doc library/std`, as well as running doc-tests for both crates.
…ty, r=GuillaumeGomez
Include default-stability info in rustdoc JSON.
Add a `default_unstable` field on associated constants, associated types, and functions. The field is populated only when those items appear inside a trait, only when there's a default present, and when that default is not stable as designated by `#[rustc_default_body_unstable]`. In such a case, the field contains the name of the feature required to use the unstable default.
The purpose of this info is to allow `cargo-semver-checks` to lint the standard library for accidental breakage of stable APIs. Removing a stable default is an example of such breakage, while removing an _unstable_ default is not.
The field is boxed to minimize the size impact on its enclosing type, since for regular crates it will always be `None`.
I also updated `jsondoclint` to assert that it's an error to have a populated `default_unstable` when there's no function body, no default const value, or no default associated type. In the process, I noticed that `jsondoclint` and `jsondocck` are both on edition 2021 — I plan to upgrade them to 2024 in separate PRs.
r? @GuillaumeGomez
**AI disclosure:** This PR is the product of a combination of manual work and AI tools. I secured approval in advance from the designated reviewer. I stand behind the quality of the code I'm submitting, and I vouch it's as good or better compared to if I had written every line by my own hand.
@rust-borsrust-borsBot added the rollup A PR which is a rollup label Jun 29, 2026
@rustbotrustbot added A-run-make Area: port run-make Makefiles to rmake.rs A-rustdoc-json Area: Rustdoc JSON backend S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jun 29, 2026
@jhpratt

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=5

@rust-bors

rust-borsBot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

📌 Commit f87af78 has been approved by jhpratt

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 29, 2026
@rust-bors

This comment has been minimized.

rust-borsBot pushed a commit that referenced this pull request Jun 29, 2026
Rollup of 6 pull requests
Successful merges:
- #158073 (bootstrap: fix panic when repo path contains spaces by switching to CARGO_ENCODED_RUSTFLAGS)
- #158256 (Avoid parser panics bubbling out to proc macros)
- #158081 (trait-system: Recover deferred closure calls after errors)
- #158323 (rustc: improve diagnostics for file-open failures)
- #158327 (Move attribute and keyword docs from `std` to `core`)
- #158468 (Include default-stability info in rustdoc JSON.)
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job aarch64-msvc-1 failed! Check out the build log: (web)(plain enhanced)(plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [ui] tests\ui\modules\path-no-file-name.rs stdout ----
Saved the actual stderr to `C:\a\rust\rust\build\aarch64-pc-windows-msvc\test\ui\modules\path-no-file-name\path-no-file-name.stderr`
diff of stderr:
- error: `$DIR/.` is a directory
+ error: permission denied when opening file `$DIR/.`
2 --> $DIR/path-no-file-name.rs:5:1
3 |
4 LL | mod m;
Note: some mismatched output was normalized before being compared
---
To only update this specific test, also pass `--test-args modules\path-no-file-name.rs`
error: 1 errors occurred comparing output.
status: exit code: 1
command: PATH="C:\a\rust\rust\build\aarch64-pc-windows-msvc\stage2\bin;C:\Program Files (x86)\Windows Kits\10\bin\arm64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\arm64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\HostARM64\arm64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\HostARM64\arm64;C:\Program Files\Git\clangarm64\bin;C:\Program Files\Git\usr\bin;C:\Users\runneradmin\bin;C:\a\rust\rust\ninja;C:\a\rust\rust\citools\clang-rust\bin;C:\a\rust\rust\sccache;C:\aliyun-cli;C:\vcpkg;C:\Program Files (x86)\NSIS;C:\Program Files\Mercurial;C:\hostedtoolcache\windows\stack\3.11.1\x64;C:\mingw64\bin;C:\Program Files\dotnet;C:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files (x86)\R\R-4.6.0\bin\x64;C:\SeleniumWebDrivers\GeckoDriver;C:\SeleniumWebDrivers\EdgeDriver;C:\SeleniumWebDrivers\ChromeDriver;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\GitHub CLI;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\pipx_bin;C:\npm\prefix;C:\hostedtoolcache\windows\go\1.24.13\arm64\bin;C:\hostedtoolcache\windows\Python\3.13.14\arm64\Scripts;C:\hostedtoolcache\windows\Python\3.13.14\arm64;C:\hostedtoolcache\windows\Ruby\3.4.9\aarch64\bin;C:\Program Files\LLVM\bin;C:\Program Files\OpenSSL\bin;C:\tools\kotlinc\bin;C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\21.0.11-10.0\aarch64\bin;C:\Tools\Ninja;C:\Program Files (x86)\ImageMagick-7.1.2-Q16-HDRI;C:\Program Files\Microsoft SDKs\Azure\CLI2\wbin;C:\ProgramData\kind;C:\ProgramData\Chocolatey\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\PowerShell\7;C:\Program Files\Microsoft\Web Platform Installer;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\dotnet;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\Program Files\Microsoft SQL Server\130\DTS\Binn;C:\Program Files\Microsoft SQL Server\140\DTS\Binn;C:\Program Files\Microsoft SQL Server\150\DTS\Binn;C:\Program Files\Microsoft SQL Server\160\DTS\Binn;C:\Program Files\Microsoft SQL Server\170\DTS\Binn;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\ProgramData\chocolatey\lib\pulumi\tools\Pulumi\bin;C:\Program Files\CMake\bin;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.16\bin;C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files\Git\clangarm64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\GitHub CLI;C:\tools\php;C:\Program Files (x86)\sbt\bin;C:\Program Files\Amazon\AWSCLIV2;C:\Program Files\Amazon\SessionManagerPlugin\bin;C:\Program Files\Amazon\AWSSAMCLI\bin;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps" "C:\\a\\rust\\rust\\build\\aarch64-pc-windows-msvc\\stage2\\bin\\rustc.exe" "C:\\a\\rust\\rust\\tests\\ui\\modules\\path-no-file-name.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=C:\\Users\\runneradmin\\.cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=C:\\a\\rust\\rust\\vendor" "--sysroot" "C:\\a\\rust\\rust\\build\\aarch64-pc-windows-msvc\\stage2" "--target=aarch64-pc-windows-msvc" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "C:\\a\\rust\\rust\\build\\aarch64-pc-windows-msvc\\test\\ui\\modules\\path-no-file-name" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=C:\\a\\rust\\rust\\build\\aarch64-pc-windows-msvc\\native\\rust-test-helpers"
stdout: none
--- stderr -------------------------------
error: permission denied when opening file `C:\a\rust\rust\tests\ui\modules\.`
##[error] --> C:\a\rust\rust\tests\ui\modules\path-no-file-name.rs:5:1
|
LL | mod m; //~ ERROR `$DIR/.` is a directory
| ^^^^^^
error: aborting due to 1 previous error
------------------------------------------
---
Some tests failed in compiletest suite=ui mode=ui host=aarch64-pc-windows-msvc target=aarch64-pc-windows-msvc
Bootstrap failed while executing `test --stage 2 --skip=compiler --skip=src --skip=src/tools/linkchecker`
Build completed unsuccessfully in 1:19:48
make: *** [Makefile:115: ci-msvc-py] Error 1
local time: Mon Jun 29 14:55:45 CUT 2026
network time: Mon, 29 Jun 2026 14:55:46 GMT
##[error]Process completed with exit code 2.
##[group]Run echo "disk usage:"
echo "disk usage:"

@rust-borsrust-borsBot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 29, 2026
@rust-bors

rust-borsBot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

💔 Test for b798cba failed: CI. Failed job:

@rust-borsrust-borsBot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jun 29, 2026
@rust-bors

rust-borsBot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

PR #158323, which is a member of this rollup, was unapproved.

@rust-borsrust-borsBot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 29, 2026
@jhprattjhpratt closed this Jun 29, 2026
@rustbotrustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jun 29, 2026
@jhpratt
jhpratt deleted the rollup-o2XVdsC branch June 29, 2026 16:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-run-makeArea: port run-make Makefiles to rmake.rsA-rustdoc-jsonArea: Rustdoc JSON backendrollupA PR which is a rollupT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@jhpratt@rust-log-analyzer@rustbot@Rohan-Singla@Unique-Usman@Dnreikronos@Mark-Simulacrum@obi1kenobi@jschillem@fmease