Skip to content

Avoid final override ICE for RPITIT associated types#158841

Merged
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
TaKO8Ki:fix-final-rpitit-override-ice
Jul 8, 2026
Merged

Avoid final override ICE for RPITIT associated types#158841
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
TaKO8Ki:fix-final-rpitit-override-ice

Conversation

@TaKO8Ki

@TaKO8Ki TaKO8Ki commented Jul 6, 2026

Copy link
Copy Markdown
Member

Fixes #158824

check_overriding_final_trait_item was running for every associated item in an impl, including the synthetic anonymous associated type generated for RPITIT.

@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. labels Jul 6, 2026
@rustbot

rustbot commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

r? @mejrs

rustbot has assigned @mejrs.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 75 candidates
  • Random selection from 20 candidates

@mejrs

mejrs commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Does this mean that rpitit's inherit the defaultness of the function that defines it?

@TaKO8Ki

TaKO8Ki commented Jul 6, 2026

Copy link
Copy Markdown
Member Author

@mejrs Yes. RPITITs are lowered to synthetic anonymous associated types, and rustc copies the containing function’s defaultness onto that associated type here:

trait_assoc_ty.defaultness(tcx.defaultness(fn_def_id));

@mejrs

mejrs commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

That code was written before final_associated_functions, is it intentional that in inherits final as well? I'm not sure whether, when final_associated_functions was written, it was considered.

@TaKO8Ki

TaKO8Ki commented Jul 7, 2026

Copy link
Copy Markdown
Member Author

@mejrs I investigated it, but couldn't find evidence that this was explicitly considered when final_associated_functions was implemented. I checked rust-lang/rfcs#3678, #151783, and #130802.

That said, inheriting Final seems right. The synthetic RPITIT assoc type represents the final function's return type, so it shouldn't be independently overridable or specializable. This PR just prevents the final-function diagnostic from running on that synthetic assoc type.

@mejrs mejrs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Okay, thanks!

@bors r+ rollup

View changes since this review

@rust-bors

rust-bors Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 5a5f78d has been approved by mejrs

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 Jul 7, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 7, 2026
…ice, r=mejrs

Avoid final override ICE for RPITIT associated types

Fixes rust-lang#158824

`check_overriding_final_trait_item` was running for every associated item in an impl, including the synthetic anonymous associated type generated for RPITIT.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 7, 2026
…ice, r=mejrs

Avoid final override ICE for RPITIT associated types

Fixes rust-lang#158824

`check_overriding_final_trait_item` was running for every associated item in an impl, including the synthetic anonymous associated type generated for RPITIT.
rust-bors Bot pushed a commit that referenced this pull request Jul 7, 2026
…uwer

Rollup of 18 pull requests

Successful merges:

 - #157385 (Enable Enzyme on x86_64-apple)
 - #157561 (rustdoc: do not include extra stuff in span)
 - #158179 (std: unconditionally use `preadv`/`pwritev` on AArch64 macOS)
 - #158617 (allow mGCA const arguments to fall back to anon consts)
 - #158621 (disallow `extern "custom"` on wasm and spirv targets)
 - #158690 (delegation: support mapping of all arguments with `Self` type)
 - #158696 (Rename some `body_id` to `body_def_id`)
 - #158697 (Fixes for QNX SDP 8)
 - #158760 (Clarify that `LocalKey::try_with` may return `AccessError`)
 - #157801 (Rewrite safety requirements for `Allocator` impls)
 - #158333 (Fix typetree generation for differentiated functions)
 - #158646 (powerpc64le_unknown_freebsd.rs: link with -lgcc)
 - #158701 ( diagnostics: suggest type annotation for closure params on HRTB FnOnce mismatch)
 - #158791 (Avoid unused braces lint for macro generated arguments)
 - #158802 (Use `ci-mirrors` in `armhf-gnu` for {busybox, ubuntu rootfs} artifacts)
 - #158841 (Avoid final override ICE for RPITIT associated types)
 - #158889 (tests: catch up with LLVM returning f128 on the stack)
 - #158905 (delegation: add constraints to new generic args)
rust-bors Bot pushed a commit that referenced this pull request Jul 7, 2026
…uwer

Rollup of 19 pull requests

Successful merges:

 - #156016 (view-types: store view types in the AST)
 - #157385 (Enable Enzyme on x86_64-apple)
 - #158179 (std: unconditionally use `preadv`/`pwritev` on AArch64 macOS)
 - #158621 (disallow `extern "custom"` on wasm and spirv targets)
 - #158690 (delegation: support mapping of all arguments with `Self` type)
 - #158696 (Rename some `body_id` to `body_def_id`)
 - #158697 (Fixes for QNX SDP 8)
 - #158760 (Clarify that `LocalKey::try_with` may return `AccessError`)
 - #157801 (Rewrite safety requirements for `Allocator` impls)
 - #158085 (rustdoc: Fix sidebar heading order)
 - #158333 (Fix typetree generation for differentiated functions)
 - #158646 (powerpc64le_unknown_freebsd.rs: link with -lgcc)
 - #158701 ( diagnostics: suggest type annotation for closure params on HRTB FnOnce mismatch)
 - #158791 (Avoid unused braces lint for macro generated arguments)
 - #158802 (Use `ci-mirrors` in `armhf-gnu` for {busybox, ubuntu rootfs} artifacts)
 - #158841 (Avoid final override ICE for RPITIT associated types)
 - #158889 (tests: catch up with LLVM returning f128 on the stack)
 - #158905 (delegation: add constraints to new generic args)
 - #158922 (tests: clean up over-constraint on LLVM feature count)

Failed merges:

 - #158617 (allow mGCA const arguments to fall back to anon consts)
@rust-bors rust-bors Bot merged commit 3df19af into rust-lang:main Jul 8, 2026
13 checks passed
@rustbot rustbot added this to the 1.99.0 milestone Jul 8, 2026
rust-timer added a commit that referenced this pull request Jul 8, 2026
Rollup merge of #158841 - TaKO8Ki:fix-final-rpitit-override-ice, r=mejrs

Avoid final override ICE for RPITIT associated types

Fixes #158824

`check_overriding_final_trait_item` was running for every associated item in an impl, including the synthetic anonymous associated type generated for RPITIT.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ICE]: item_ident: no name for DefPath

3 participants