Skip to content

Conversation

lqd
Copy link
Member

@lqd lqd commented Oct 15, 2025

Polonius liveness has to contain boring locals, and we ignore them in diagnostics, to match NLL diagnostics that never involve any boring locals. When explaining why a borrow contains a point, I ignored these boring locals when it was due to a use of a live var, but forgot to do so when the cause was because of a drop of a live var.

This is what was causing the last two (known) diagnostics differences under the polonius compare-mode:

  • tests/ui/dropck/dropck_trait_cycle_checked.rs
  • tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs

r? @jackh726

Polonius liveness has to contain boring locals, and we ignore them in
diagnostics to match NLL diagnostics, since they doesn't contain boring locals.

We ignored these when explaining why a loan contained a point due to
a use of a live var, but not when it contained a point due to a drop of
a live var.
@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 Oct 15, 2025
@jackh726
Copy link
Member

jackh726 commented Oct 15, 2025

🎉

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Oct 15, 2025

📌 Commit 68080de has been approved by jackh726

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 15, 2025
@lqd
Copy link
Member Author

lqd commented Oct 15, 2025

no 🎉 s just yet, there are still 2 annoying failures due to opaque types weirdness in liveness :) these were just the last differences in diagnostics content, compared to, say, unsoundness

@jackh726
Copy link
Member

no 🎉 s just yet, there are still 2 annoying failures due to opaque types weirdness in liveness :) these were just the last differences in diagnostics content, compared to, say, unsoundness

😦☹

bors added a commit that referenced this pull request Oct 15, 2025
Rollup of 11 pull requests

Successful merges:

 - #143191 (Stabilize `rwlock_downgrade` library feature)
 - #147444 (Allow printing a fully-qualified path in `def_path_str`)
 - #147527 (Update t-compiler beta nomination Zulip msg)
 - #147670 (some `ErrorGuaranteed` cleanups)
 - #147676 (Return spans out of `is_doc_comment` to reduce reliance on `.span()` on attributes)
 - #147708 (const `mem::drop`)
 - #147710 (Fix ICE when using contracts on async functions)
 - #147716 (Fix some comments)
 - #147718 (miri: use allocator_shim_contents codegen helper)
 - #147729 (ignore boring locals when explaining why a borrow contains a point due to drop of a live local under polonius)
 - #147742 (Revert unintentional whitespace changes to rustfmt-excluded file)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 33c2952 into rust-lang:master Oct 16, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 16, 2025
rust-timer added a commit that referenced this pull request Oct 16, 2025
Rollup merge of #147729 - lqd:polonius-diagnostics, r=jackh726

ignore boring locals when explaining why a borrow contains a point due to drop of a live local under polonius

Polonius liveness has to contain boring locals, and we ignore them in diagnostics, to match NLL diagnostics that never involve any boring locals. When explaining why a borrow contains a point, I ignored these boring locals when it was due to a use of a live var, but forgot to do so when the cause was because of a drop of a live var.

This is what was causing the last two (known) diagnostics differences under the polonius compare-mode:
- `tests/ui/dropck/dropck_trait_cycle_checked.rs`
- `tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs`

r? `@jackh726`
@lqd lqd deleted the polonius-diagnostics branch October 16, 2025 04:41
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Oct 16, 2025
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#143191 (Stabilize `rwlock_downgrade` library feature)
 - rust-lang/rust#147444 (Allow printing a fully-qualified path in `def_path_str`)
 - rust-lang/rust#147527 (Update t-compiler beta nomination Zulip msg)
 - rust-lang/rust#147670 (some `ErrorGuaranteed` cleanups)
 - rust-lang/rust#147676 (Return spans out of `is_doc_comment` to reduce reliance on `.span()` on attributes)
 - rust-lang/rust#147708 (const `mem::drop`)
 - rust-lang/rust#147710 (Fix ICE when using contracts on async functions)
 - rust-lang/rust#147716 (Fix some comments)
 - rust-lang/rust#147718 (miri: use allocator_shim_contents codegen helper)
 - rust-lang/rust#147729 (ignore boring locals when explaining why a borrow contains a point due to drop of a live local under polonius)
 - rust-lang/rust#147742 (Revert unintentional whitespace changes to rustfmt-excluded file)

r? `@ghost`
`@rustbot` modify labels: rollup
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.

4 participants