Skip to content

Do not suppress the fn item uniqueness note for late bound lifetimes - #161894

Open
zakrad wants to merge 2 commits into
rust-lang:mainfrom
zakrad:fix-fn-item-note-late-bound-145558
Open

Do not suppress the fn item uniqueness note for late bound lifetimes#161894
zakrad wants to merge 2 commits into
rust-lang:mainfrom
zakrad:fix-fn-item-note-late-bound-145558

Conversation

@zakrad

@zakrad zakrad commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Fixes #145558 same_type_modulo_infer compared the bound regions by identity, so the note was suppressed for late bound lifetimes and anonymizing the binders fixes it.

I authored and reviewed the change and used LLM to help locate the code and validate the fix

@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 Aug 27, 2026
@rustbot

rustbot commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

r? @nnethercote

rustbot has assigned @nnethercote.
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 18 candidates

@nnethercote nnethercote 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.

Suggestion for next time: when doing error message improvements it's nice to add the new test in a first commit, and then make the error message change in the second commit. That way it's easy for the reviewer to see exactly how the error message changed.

View changes since this review

|| !found_sig.is_suggestable(self.tcx, true)
|| !expected_sig.is_suggestable(self.tcx, true)
|| self.tcx.intrinsic(*did1).is_some()
|| self.tcx.intrinsic(*did2).is_some()

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.

Should this condition be updated to use expected_sig_anon and found_sign_anon?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I tried, it makes the as fn(..) help trigger and then prints as fn(&'^0.Named(DefId(0:6 ~ lt[99a7]::f1::'a)) A) which looks like a separate pre existing issue with that help, so I left it as is.

@nnethercote

nnethercote commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

This seems reasonable to me, modulo the mentioned nit. But anything involving for<'a> is out of my comfort zone and an expert should probably take a look, so...

r? types

@rustbot rustbot added the T-types Relevant to the types team, which will review and decide on the PR/issue. label Aug 30, 2026
@rustbot rustbot assigned jackh726 and unassigned nnethercote Aug 30, 2026
@nnethercote nnethercote added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 30, 2026
@zakrad
zakrad force-pushed the fix-fn-item-note-late-bound-145558 branch from e378b8a to 21228c2 Compare August 31, 2026 09:57
@zakrad

zakrad commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

Splitted as suggested @rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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-types Relevant to the types team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Lifetimes on functions suppress helpful "different fn items have unique types, even if their signatures are the same" note

4 participants