-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix -Z print-type-sizes
for generators with discriminant field ordered first
#105623
Fix -Z print-type-sizes
for generators with discriminant field ordered first
#105623
Conversation
r? @Nilstrieb (rustbot has picked a reviewer for you, use r? to override) |
Confirmed manually that #105589 is fixed by this by running |
e6e0368
to
c85ce4c
Compare
_ => Size::ZERO, | ||
}; | ||
|
||
if layout.fields.offset(tag_field) >= variant_size { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It took me a while to understand why this change was correct, probably mostly because the variant_size
variable is a little confusingly named. Maybe something like last_field_end
would better?
Thinking about this a little more, what this code really wants to do is Actually no, that would be incorrect if the discriminant was at the end.variant_size.max(tag_end)
, maybe that would also make it simpler.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure this is any clearer with the name last_field_end
, because it really is the variant size (plus the upvars), modulo a hack to deal with needing to conditionally subtract one from the variant size depending on where the layout code chooses to put the tag.
Anyways, what I can do is leave a more detailed comment explaining why this is needed. This is probably still broken, but I don't know if it's worth taking much more time to fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is true, all of this code is trying to fit generator layout into a normal layout shaped hole and it's not going great. The current name is fine too and yeah, spending too much time on this is probably not worth it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But a quick comment would be nice.
3206470
to
bdc3c4b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for adding the comment, r=me once CI is green.
@bors r=Nilstrieb |
…e-fix, r=Nilstrieb Fix `-Z print-type-sizes` for generators with discriminant field ordered first Fixes rust-lang#105589 Fixes rust-lang#105591
…e-fix, r=Nilstrieb Fix `-Z print-type-sizes` for generators with discriminant field ordered first Fixes rust-lang#105589 Fixes rust-lang#105591
…e-fix, r=Nilstrieb Fix `-Z print-type-sizes` for generators with discriminant field ordered first Fixes rust-lang#105589 Fixes rust-lang#105591
…e-fix, r=Nilstrieb Fix `-Z print-type-sizes` for generators with discriminant field ordered first Fixes rust-lang#105589 Fixes rust-lang#105591
…iaskrgr Rollup of 11 pull requests Successful merges: - rust-lang#104592 (Ensure async trait impls are async (or otherwise return an opaque type)) - rust-lang#105623 (Fix `-Z print-type-sizes` for generators with discriminant field ordered first) - rust-lang#105627 (Auto traits in `dyn Trait + Auto` are suggestable) - rust-lang#105633 (Make `report_projection_error` more `Term` agnostic) - rust-lang#105683 (Various cleanups to dest prop) - rust-lang#105692 (Add regression test for rust-lang#104678) - rust-lang#105707 (rustdoc: remove unnecessary CSS `kbd { cursor: default }`) - rust-lang#105715 (Do not mention long types in E0599 label) - rust-lang#105722 (more clippy::complexity fixes) - rust-lang#105724 (rustdoc: remove no-op CSS `.scrape-example .src-line-numbers { margin: 0 }`) - rust-lang#105730 (rustdoc: remove no-op CSS `.item-info:before { color }`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Fixes #105589
Fixes #105591