Skip to content

Rollup of 13 pull requests#152213

Merged
rust-bors[bot] merged 32 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-trjCgZZ
Feb 6, 2026
Merged

Rollup of 13 pull requests#152213
rust-bors[bot] merged 32 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-trjCgZZ

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

Jarcho and others added 30 commits November 24, 2025 16:10
It contains the `Cursor` type and an `impl Cursor` block with a few
methods. But there is a larger `impl Cursor` block in the crate root.
The only other thing in the `cursor` module is the simple
`FrontmatterAllowed` type.

So this commit just moves everything in the `cursor` module (which isn't
much) into the crate root.
Every diagnostic struct in `rustc_parse` is in the `errors` module,
except for `ForbiddenLetReason` and `MisspelledKw`. There's no good
reason for this, and presumably it is just an accidental inconsistency.
This commit moves them into `errors`.
From the `parser` module to the `errors` module, which is where most of
its uses are.

This means the `errors` module no longer depends on the `parser` module,
removing a cyclic dependency between the two modules.
And move try_find_description to rustc_errors::codes.
…is, r=jdonszelmann

Convert to inline diagnostics in `rustc_hir_analysis`

For rust-lang#151366
r? @jdonszelmann
Mark match arms in try and for as being from desugarings.

Some of the arms created by these desugarings have an expression which isn't marked as coming from the desugaring. e.g. try generates `Continue(val) => val` where the expression has the span of the original parameter (done for diagnostic purposes). Since the arm created just used that span they end up without a desugaring mark unnecessarily.

This is only a minor annoyance with some work I'm doing in clippy.
Minor structural improvements

Some small cleanups.

r? @davidtwco
…r=lqd

Convert to inline diagnostics in `rustc_borrowck`

For rust-lang#151366
r? @jdonszelmann
…ction2, r=GuillaumeGomez

Convert to inline diagnostics in `rustc_trait_selection`

For rust-lang#151366
r? @jdonszelmann
…ks, r=BoxyUwU

Consolidate type const checks on `tcx.is_type_const`

A little bit of cleanup; explanation can be found in the reporting issue.

Fixes rust-lang#152124
r? BoxyUwU
…=jdonszelmann

Hard code the error code registry for custom drivers

And do some cleanups enabled by this.
Fix typos in riscv64a23-unknown-linux-gnu.md
…visibility, r=JonathanBrouwer

Port `rustc_effective_visibility` to the new attribute parser

r? @JonathanBrouwer
…ckport-zulip-msg, r=jieyouxu

update compiler stable backport zulip msg

I'd like to update the message when stable backports (for t-compiler) Zulip topics are opened.

Stable backports mention the channel i.e. also people who might not have context, example:
[#t-compiler/backports > rust-lang#150590: stable-nominated @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports/topic/.23150590.3A.20stable-nominated/near/569989784)

Beta backports mention author+reviewer (which fits better), example:
[#t-compiler/backports > rust-lang#151896: beta-nominated @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports/topic/.23151896.3A.20beta-nominated/near/571171604)

This patch makes the `stable` backport opening message just like the `beta` backport one.

Thanks
Port rustc_abi to the attribute parser

Tracking issue: rust-lang#131229

This attribute either dumps the abi info for functions (debug arg)
or if you put it on a pair of fn ptr's it checks they match (assert_eq arg)

r? @JonathanBrouwer
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 6, 2026

📌 Commit 2a01963 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors bot 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 Feb 6, 2026
@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 6, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 6, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 8m 32s
Pushing 035b01b to main...

@github-actions
Copy link
Contributor

github-actions bot commented Feb 6, 2026

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing cf16cd9 (parent) -> 035b01b (this PR)

Test differences

Show 116 test diffs

Stage 0

  • error_reporting::traits::on_unimplemented::verify_trait_selection_ignored_diagnostic_option_2: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_malformed_on_unimplemented_attr_0: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_missing_options_for_on_unimplemented_attr_1: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_wrapped_parser_error_3: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_disallowed_positional_argument_5: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_invalid_format_specifier_6: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_missing_options_for_on_unimplemented_attr_7: pass -> [missing] (J0)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_unknown_format_parameter_for_on_unimplemented_attr_4: pass -> [missing] (J0)
  • errors::verify_trait_selection_but_calling_introduces_21: pass -> [missing] (J0)
  • errors::verify_trait_selection_but_needs_to_satisfy_22: pass -> [missing] (J0)
  • errors::verify_trait_selection_coro_closure_not_fn_18: pass -> [missing] (J0)
  • errors::verify_trait_selection_explicit_lifetime_required_with_ident_19: pass -> [missing] (J0)
  • errors::verify_trait_selection_explicit_lifetime_required_with_param_type_20: pass -> [missing] (J0)
  • errors::verify_trait_selection_inherent_projection_normalization_overflow_17: pass -> [missing] (J0)
  • errors::verify_trait_selection_lf_bound_not_satisfied_23: pass -> [missing] (J0)
  • errors::verify_trait_selection_lf_bound_not_satisfied_24: pass -> [missing] (J0)
  • errors::verify_trait_selection_lf_bound_not_satisfied_25: pass -> [missing] (J0)
  • errors::verify_trait_selection_lf_bound_not_satisfied_26: pass -> [missing] (J0)
  • errors::verify_trait_selection_lf_bound_not_satisfied_27: pass -> [missing] (J0)
  • errors::verify_trait_selection_opaque_captures_lifetime_28: pass -> [missing] (J0)
  • errors::verify_trait_selection_opaque_type_non_generic_param_29: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_empty_on_clause_9: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_expected_identifier_12: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_expected_one_predicate_in_not_10: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_flag_14: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_name_15: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_predicate_13: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_missing_value_16: pass -> [missing] (J0)
  • errors::verify_trait_selection_rustc_on_unimplemented_unsupported_literal_in_on_11: pass -> [missing] (J0)
  • errors::verify_trait_selection_unable_to_construct_constant_value_8: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_cannot_move_when_borrowed_5: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_generic_does_not_live_long_enough_2: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_higher_ranked_subtype_error_1: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_lifetime_constraints_error_4: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_move_unsized_0: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_opaque_type_lifetime_mismatch_6: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_simd_intrinsic_arg_const_7: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_tail_expr_drop_order_8: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_var_does_not_need_mut_3: pass -> [missing] (J0)

Stage 1

  • error_reporting::traits::on_unimplemented::verify_trait_selection_ignored_diagnostic_option_2: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_malformed_on_unimplemented_attr_0: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_missing_options_for_on_unimplemented_attr_1: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented::verify_trait_selection_wrapped_parser_error_3: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_disallowed_positional_argument_5: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_invalid_format_specifier_6: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_missing_options_for_on_unimplemented_attr_7: pass -> [missing] (J1)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_unknown_format_parameter_for_on_unimplemented_attr_4: pass -> [missing] (J1)
  • errors::verify_trait_selection_but_calling_introduces_21: pass -> [missing] (J1)
  • errors::verify_trait_selection_but_needs_to_satisfy_22: pass -> [missing] (J1)
  • errors::verify_trait_selection_coro_closure_not_fn_18: pass -> [missing] (J1)
  • errors::verify_trait_selection_explicit_lifetime_required_with_ident_19: pass -> [missing] (J1)
  • errors::verify_trait_selection_explicit_lifetime_required_with_param_type_20: pass -> [missing] (J1)
  • errors::verify_trait_selection_inherent_projection_normalization_overflow_17: pass -> [missing] (J1)
  • errors::verify_trait_selection_lf_bound_not_satisfied_23: pass -> [missing] (J1)
  • errors::verify_trait_selection_lf_bound_not_satisfied_24: pass -> [missing] (J1)
  • errors::verify_trait_selection_lf_bound_not_satisfied_25: pass -> [missing] (J1)
  • errors::verify_trait_selection_lf_bound_not_satisfied_26: pass -> [missing] (J1)
  • errors::verify_trait_selection_lf_bound_not_satisfied_27: pass -> [missing] (J1)
  • errors::verify_trait_selection_opaque_captures_lifetime_28: pass -> [missing] (J1)
  • errors::verify_trait_selection_opaque_type_non_generic_param_29: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_empty_on_clause_9: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_expected_identifier_12: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_expected_one_predicate_in_not_10: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_flag_14: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_name_15: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_invalid_predicate_13: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_missing_value_16: pass -> [missing] (J1)
  • errors::verify_trait_selection_rustc_on_unimplemented_unsupported_literal_in_on_11: pass -> [missing] (J1)
  • errors::verify_trait_selection_unable_to_construct_constant_value_8: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_cannot_move_when_borrowed_5: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_generic_does_not_live_long_enough_2: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_higher_ranked_subtype_error_1: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_lifetime_constraints_error_4: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_move_unsized_0: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_opaque_type_lifetime_mismatch_6: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_simd_intrinsic_arg_const_7: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_tail_expr_drop_order_8: pass -> [missing] (J1)
  • session_diagnostics::verify_borrowck_var_does_not_need_mut_3: pass -> [missing] (J1)

Additionally, 38 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 035b01b794602d5861daa43ac792f372f8981ed7 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. pr-check-1: 33m 15s -> 29m 45s (-10.5%)
  2. dist-aarch64-msvc: 1h 47m -> 1h 36m (-9.9%)
  3. x86_64-gnu-gcc: 1h 2m -> 1h 8m (+8.7%)
  4. x86_64-mingw-1: 2h 50m -> 2h 36m (-8.2%)
  5. dist-armv7-linux: 1h 36m -> 1h 29m (-7.9%)
  6. aarch64-msvc-1: 2h 7m -> 1h 57m (-7.7%)
  7. tidy: 2m 41s -> 2m 53s (+7.5%)
  8. pr-check-2: 41m 49s -> 38m 45s (-7.3%)
  9. dist-x86_64-illumos: 1h 47m -> 1h 40m (-6.2%)
  10. x86_64-gnu-tools: 1h 1m -> 57m 54s (-6.0%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149329 Mark match arms in try and for as being from desugarings. 04edc0f074f8e9e068167ac4d5f97aa038f5f2c5 (link)
#151474 Minor structural improvements 13484b3841431e1308f6c03e6f2092bd9d7e7edf (link)
#152107 Convert to inline diagnostics in rustc_borrowck 2701a3da01971d38ede00250b7d3695655903f34 (link)
#152117 Convert to inline diagnostics in rustc_trait_selection dd7a4f15817a2b7ff0e86e81eef660b13055f0c1 (link)
#152136 Consolidate type const checks on tcx.is_type_const 831abcd035ff77a9f66828fcd676c6fc654977d6 (link)
#152140 Hard code the error code registry for custom drivers 8c1afc7fc051158a3dd8d8a891f0822500584d0a (link)
#152155 Fix typos in riscv64a23-unknown-linux-gnu.md cde83f713e0ae7bd761a11668431c2e07e318e7c (link)
#152170 Port rustc_effective_visibility to the new attribute pars… a38d6058d8f6518c52b12d7f9488c736529f0b79 (link)
#152182 update compiler stable backport zulip msg 93cdca7ef202c2f2ae18297a9a2d3a154bbbd916 (link)
#152184 Port rustc_abi to the attribute parser 394c6a83d8a431d814d97549b8fe908094d6fc64 (link)
#152191 Convert to inline diagnostics in rustc_hir_analysis 6716370dc15cc07d315e4135c4e4b2ad3b362f69 (link)
#152195 update openmp/offload builds to LLVM 22, Part 1 feac976a098d75f0a328ab7c327c9660f2fc2dae (link)
#152202 chore: clearify tidy's error message fd3f3b75cdb7df7b3f7509f61d4f233192758016 (link)

previous master: cf16cd9b75

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (035b01b): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.3% [0.3%, 0.3%] 1
Improvements ✅
(primary)
-0.2% [-0.2%, -0.2%] 1
Improvements ✅
(secondary)
-1.8% [-5.5%, -0.1%] 42
All ❌✅ (primary) -0.2% [-0.2%, -0.2%] 1

Max RSS (memory usage)

Results (primary -2.2%, secondary -1.8%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.9% [0.9%, 0.9%] 1
Improvements ✅
(primary)
-2.2% [-2.2%, -2.2%] 1
Improvements ✅
(secondary)
-4.6% [-4.6%, -4.6%] 1
All ❌✅ (primary) -2.2% [-2.2%, -2.2%] 1

Cycles

Results (primary 3.1%, secondary 2.9%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
3.1% [2.2%, 4.1%] 3
Regressions ❌
(secondary)
2.9% [2.2%, 4.3%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.1% [2.2%, 4.1%] 3

Binary size

Results (primary -0.0%, secondary 0.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.0% [0.0%, 0.0%] 4
Regressions ❌
(secondary)
0.0% [0.0%, 0.1%] 14
Improvements ✅
(primary)
-0.0% [-0.0%, -0.0%] 13
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.0%] 5
All ❌✅ (primary) -0.0% [-0.0%, 0.0%] 17

Bootstrap: 474.937s -> 476.944s (0.42%)
Artifact size: 397.89 MiB -> 397.94 MiB (0.01%)

@JonathanBrouwer
Copy link
Contributor Author

The regression looks like noise.
The improvements are from the inline diagnostics PRs, exactly the same tests improved as in the previous rollups

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-rustc-dev-guide Area: rustc-dev-guide A-tidy Area: The tidy tool A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup 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-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustfmt Relevant to the rustfmt team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.