Skip to content

Conversation

matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Oct 1, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Jules-Bertholet and others added 21 commits September 18, 2025 09:16
…BoxyUwU

Allow specifying multiple bounds for same associated item, except in trait objects

Supersedes rust-lang#143146, fixes rust-lang#143143.

This PR proposes to stop enforcing E0719 in all contexts other than trait object types.

E0719 forbids constraining the same associated item twice within the same angle-bracket delimited associated item bound list (the `…` inside `T: Trait<…>`). For example, the following are forbidden:

| Forbidden                                  | Working alternative                                                |
|--------------------------------------------|--------------------------------------------------------------------|
| `T: Trait<Gat<u32> = u32, Gat<u64> = u64>` | `T: Trait<Gat<u32> = u32> + Trait<Gat<u64> = u64>`                 |
| `T: Iterator<Item = u32, Item = i32>`      | `T: Iterator<Item = u32> + Iterator<Item = i32>` (trivially false) |
| `T: Iterator<Item = u32, Item = u32>`      | `T: Iterator<Item = u32>`                                          |
| `T: Iterator<Item: Send, Item: Sync>`      | `T: Iterator<Item: Send + Sync>`                                   |
| `T: Trait<ASSOC = 3, ASSOC = 4>`           | `T: Trait<ASSOC = 3> + Trait<ASSOC = 4>` (trivially false)         |
| `T: Trait<ASSOC = 3, ASSOC = 3>`           | `T: Trait<ASSOC = 3>`                                              |

With this PR, all those previously forbidden examples would start working, as well as their APIT and RPIT equivalents.

Types like `dyn Iterator<Item = u32, Item = u32>` will continue to be rejected, however. See rust-lang#143146 (comment) for the reason why.

```@rustbot``` label T-lang T-types needs-fcp
[DebugInfo] Fix MSVC tuple child creation

This is a fix for the debugger visualizer scripts

For whatever reason, using `CreateChildAtOffset` on the child element sometimes caused issues with pointers (and maybe some other types). The resulting child's memory would be a block 4 bytes too far forward. Creating the child off of the parent `valobj` and using the type definition to get the correct offset seems to fix that.

Before:

<img width="489" height="136" alt="image" src="https://github.com/user-attachments/assets/fb4cb95c-f199-49a6-8eba-6d3ff486b69a" />

After:

<img width="518" height="145" alt="image" src="https://github.com/user-attachments/assets/3f50dbc3-19ca-4fd8-87c5-b4be295f6e7c" />

This shouldn't affect any tests as we don't run debuginfo tests for MSVC afaik
iter repeat: add tests for new count and last behavior

Tests for rust-lang#146410
Swap order of `resolve_coroutine_interiors` and `handle_opaque_type_uses`

r? ```@BoxyUwU```

if the comment says x should be last, it helps if it's actually last hehe :P

Fixes rust-lang/trait-system-refactor-initiative#239
…boet

Refactor ArrayWindows to use a slice

[Tracking issue](rust-lang#75027)
…szelmann

Add proper error handling for closure in impl

Fixes rust-lang#147146
Fixes rust-lang#146620

Not sure if it can cause any regressions or anything, as for test also have no idea where to store this one

cc ```@theemathas```

r? compiler
…lver, r=lcnr

include `outer_inclusive_binder` of pattern types

Fixes rust-lang/trait-system-refactor-initiative#237

r? ```@lcnr```
Fix typo in 'unfulfilled_lint_expectation' to plural
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. rollup A PR which is a rollup labels Oct 1, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Oct 1, 2025

📌 Commit de67301 has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors bors 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 Oct 1, 2025
@bors
Copy link
Collaborator

bors commented Oct 1, 2025

⌛ Testing commit de67301 with merge 4da69df...

@bors
Copy link
Collaborator

bors commented Oct 1, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing 4da69df to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 1, 2025
@bors bors merged commit 4da69df into rust-lang:master Oct 1, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 1, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#146593 Allow specifying multiple bounds for same associated item, … 284b13c51dac0fe0981b7db65910d436d98ad728 (link)
#147177 [DebugInfo] Fix MSVC tuple child creation 8532f9da7790440e45f46af2f9e803aa02d1cfcc (link)
#147195 iter repeat: add tests for new count and last behavior 4029272a39c430235e532f272331123aa455c188 (link)
#147202 Swap order of resolve_coroutine_interiors and `handle_opa… 804ee69126d2b8c6ae81590e6663eaef386b489f (link)
#147204 Refactor ArrayWindows to use a slice c4eba6621658c89163ab692c4e86bac773274837 (link)
#147219 Add proper error handling for closure in impl 64b567fa3fe9a585f689dc2a4c30b2f23d7f1d59 (link)
#147226 include outer_inclusive_binder of pattern types 7e7d6288b5d108cad2d11a1f5d7aa2026088b9ad (link)
#147230 Fix typo in 'unfulfilled_lint_expectation' to plural 54f610abf44c67b87153639800a53fc365d8f87d (link)

previous master: d4ae855111

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

Copy link
Contributor

github-actions bot commented Oct 1, 2025

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 d4ae855 (parent) -> 4da69df (this PR)

Test differences

Show 62 test diffs

Stage 1

  • [ui] tests/ui/associated-type-bounds/duplicate-bound-err.rs: [missing] -> pass (J1)
  • [ui] tests/ui/associated-type-bounds/duplicate-bound.rs: [missing] -> pass (J1)
  • [ui] tests/ui/associated-type-bounds/duplicate.rs: pass -> [missing] (J1)
  • [ui] tests/ui/closures/impl-closure-147146.rs: [missing] -> pass (J1)
  • [ui] tests/ui/coroutine/handle_opaques_before_coroutines.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/coroutine/handle_opaques_before_coroutines.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/const_generics.rs: pass -> [missing] (J1)
  • [ui] tests/ui/type/pattern_types/const_generics.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/const_generics.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/transmute.rs: pass -> [missing] (J1)
  • [ui] tests/ui/type/pattern_types/transmute.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/transmute.rs#next: [missing] -> pass (J1)
  • iter::sources::test_repeat_count: [missing] -> pass (J3)
  • iter::sources::test_repeat_last: [missing] -> pass (J3)

Stage 2

  • [ui] tests/ui/associated-type-bounds/duplicate-bound-err.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-type-bounds/duplicate-bound.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-type-bounds/duplicate.rs: pass -> [missing] (J0)
  • [ui] tests/ui/closures/impl-closure-147146.rs: [missing] -> pass (J0)
  • [ui] tests/ui/coroutine/handle_opaques_before_coroutines.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/coroutine/handle_opaques_before_coroutines.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/const_generics.rs: pass -> [missing] (J0)
  • [ui] tests/ui/type/pattern_types/const_generics.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/const_generics.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/transmute.rs: pass -> [missing] (J0)
  • [ui] tests/ui/type/pattern_types/transmute.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/transmute.rs#next: [missing] -> pass (J0)
  • iter::sources::test_repeat_count: [missing] -> pass (J2)
  • iter::sources::test_repeat_last: [missing] -> pass (J2)

Additionally, 34 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 4da69dfff1929cc79872b3d05ab7112d84753dba --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. aarch64-apple: 6998.1s -> 9585.7s (37.0%)
  2. dist-x86_64-apple: 5807.8s -> 7270.3s (25.2%)
  3. dist-aarch64-apple: 6131.3s -> 7128.2s (16.3%)
  4. dist-i586-gnu-i586-i686-musl: 4808.7s -> 5526.0s (14.9%)
  5. x86_64-rust-for-linux: 2560.0s -> 2928.0s (14.4%)
  6. tidy: 181.8s -> 205.0s (12.7%)
  7. test-various: 4978.1s -> 4414.3s (-11.3%)
  8. dist-aarch64-msvc: 5951.1s -> 5368.9s (-9.8%)
  9. aarch64-gnu-debug: 4050.2s -> 4332.5s (7.0%)
  10. i686-gnu-1: 7753.2s -> 8265.1s (6.6%)
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

Finished benchmarking commit (4da69df): comparison URL.

Overall result: ❌ regressions - 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)
1.1% [1.1%, 1.1%] 1
Regressions ❌
(secondary)
1.1% [1.1%, 1.1%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.1% [1.1%, 1.1%] 1

Max RSS (memory usage)

Results (primary 2.5%, secondary -2.7%)

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

mean range count
Regressions ❌
(primary)
2.5% [2.5%, 2.5%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.7% [-2.7%, -2.7%] 1
All ❌✅ (primary) 2.5% [2.5%, 2.5%] 1

Cycles

Results (secondary -5.9%)

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
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-5.9% [-9.8%, -2.1%] 4
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 470.999s -> 471.938s (0.20%)
Artifact size: 387.75 MiB -> 387.73 MiB (-0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.