Skip to content

Improve DispatchFromDyn and CoerceUnsized impl validation #135228

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 3 commits into from
Jan 15, 2025

Conversation

compiler-errors
Copy link
Member

  • Disallow arbitrary 1-ZST fields in DispatchFromDyn -- only PhantomData, and 1-ZSTs that mention no params (which is needed to support, e.g., the Global alloctor in Box<T, U = Global>).
  • Don't allow coercing between non-ZSTs to ZSTs (since the previous check wasn't actually checking the field tys were the same before checking the layout...)
  • Normalize the field before checking it's PhantomData.

Fixes #135215
Fixes #135214
Fixes #135220

r? @BoxyUwU or reassign

@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 Jan 8, 2025
Copy link
Contributor

@Darksonn Darksonn left a comment

Choose a reason for hiding this comment

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

Thank you!

Copy link
Contributor

Choose a reason for hiding this comment

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

This test is from #135214 that this PR is listed as fixing, but that issue also has another broken example that involves feature(lazy_type_alias). Is that part of #135214 also fixed by this?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, I don't think it's important to include both tests.

@BoxyUwU
Copy link
Member

BoxyUwU commented Jan 14, 2025

@bors r+

@bors
Copy link
Collaborator

bors commented Jan 14, 2025

📌 Commit f47c58f has been approved by BoxyUwU

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 Jan 14, 2025
@BoxyUwU
Copy link
Member

BoxyUwU commented Jan 14, 2025

(feel free to r- and fix the typo before this lands if you care to 🤷‍♀️)

@compiler-errors
Copy link
Member Author

hm yeah i'll update it

@bors r-

@bors bors 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-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 14, 2025
@compiler-errors
Copy link
Member Author

@bors r=BoxyUwU

@bors
Copy link
Collaborator

bors commented Jan 14, 2025

📌 Commit 3cd7581 has been approved by BoxyUwU

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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jan 14, 2025
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jan 14, 2025
…atch, r=BoxyUwU

Improve `DispatchFromDyn` and `CoerceUnsized` impl validation

* Disallow arbitrary 1-ZST fields in `DispatchFromDyn` -- only `PhantomData`, and 1-ZSTs that mention no params (which is needed to support, e.g., the `Global` alloctor in `Box<T, U = Global>`).
* Don't allow coercing between non-ZSTs to ZSTs (since the previous check wasn't actually checking the field tys were the same before checking the layout...)
* Normalize the field before checking it's `PhantomData`.

Fixes rust-lang#135215
Fixes rust-lang#135214
Fixes rust-lang#135220

r? `@BoxyUwU` or reassign
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jan 14, 2025
…atch, r=BoxyUwU

Improve `DispatchFromDyn` and `CoerceUnsized` impl validation

* Disallow arbitrary 1-ZST fields in `DispatchFromDyn` -- only `PhantomData`, and 1-ZSTs that mention no params (which is needed to support, e.g., the `Global` alloctor in `Box<T, U = Global>`).
* Don't allow coercing between non-ZSTs to ZSTs (since the previous check wasn't actually checking the field tys were the same before checking the layout...)
* Normalize the field before checking it's `PhantomData`.

Fixes rust-lang#135215
Fixes rust-lang#135214
Fixes rust-lang#135220

r? ``@BoxyUwU`` or reassign
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 15, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#134940 (Make sure to scrape region constraints from deeply normalizing type outlives assumptions in borrowck)
 - rust-lang#135047 (Add gpu-kernel calling convention)
 - rust-lang#135228 (Improve `DispatchFromDyn` and `CoerceUnsized` impl validation)
 - rust-lang#135264 (Consider more erroneous layouts as `LayoutError::ReferencesError` to suppress spurious errors)
 - rust-lang#135302 (for purely return-type based searches, deprioritize clone-like functions)
 - rust-lang#135380 (Make sure we can produce `ConstArgHasWrongType` errors for valtree consts)
 - rust-lang#135425 (Do not consider traits that have unsatisfied const conditions to be conditionally const)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 15, 2025
…kingjubilee

Rollup of 11 pull requests

Successful merges:

 - rust-lang#134913 (bootstrap: do not rely on LIBRARY_PATH env variable)
 - rust-lang#134940 (Make sure to scrape region constraints from deeply normalizing type outlives assumptions in borrowck)
 - rust-lang#135228 (Improve `DispatchFromDyn` and `CoerceUnsized` impl validation)
 - rust-lang#135264 (Consider more erroneous layouts as `LayoutError::ReferencesError` to suppress spurious errors)
 - rust-lang#135302 (for purely return-type based searches, deprioritize clone-like functions)
 - rust-lang#135353 (re-add --disable-minification to rustdoc)
 - rust-lang#135380 (Make sure we can produce `ConstArgHasWrongType` errors for valtree consts)
 - rust-lang#135423 (Enforce syntactical stability of const traits in HIR)
 - rust-lang#135425 (Do not consider traits that have unsatisfied const conditions to be conditionally const)
 - rust-lang#135499 (fix underlining of hovered intra-doc links.)
 - rust-lang#135505 (Fix clippy lints in rustdoc)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit f256f9e into rust-lang:master Jan 15, 2025
6 checks passed
@rustbot rustbot added this to the 1.86.0 milestone Jan 15, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jan 15, 2025
Rollup merge of rust-lang#135228 - compiler-errors:normalizes-ur-dispatch, r=BoxyUwU

Improve `DispatchFromDyn` and `CoerceUnsized` impl validation

* Disallow arbitrary 1-ZST fields in `DispatchFromDyn` -- only `PhantomData`, and 1-ZSTs that mention no params (which is needed to support, e.g., the `Global` alloctor in `Box<T, U = Global>`).
* Don't allow coercing between non-ZSTs to ZSTs (since the previous check wasn't actually checking the field tys were the same before checking the layout...)
* Normalize the field before checking it's `PhantomData`.

Fixes rust-lang#135215
Fixes rust-lang#135214
Fixes rust-lang#135220

r? ```@BoxyUwU``` or reassign
# for free to join this conversation on GitHub. Already have an account? # 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
5 participants