-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Add InterpCx::project_fields
#144890
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
Add InterpCx::project_fields
#144890
Conversation
- don't need type alias to default type argument - `Residual` impl allows to use more std APIs (like `<[T; N]>::try_map`)
r? @nnethercote rustbot has assigned @nnethercote. Use |
This comment has been minimized.
This comment has been minimized.
15caa11
to
f87bd48
Compare
This comment has been minimized.
This comment has been minimized.
f87bd48
to
cf7b674
Compare
res: Result<T, InterpErrorInfo<'tcx>>, | ||
guard: Guard, | ||
} | ||
|
||
// Type alias to be able to set a default type argument. |
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.
:thonk:
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 have 0 ideas xd
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.
Hm, somehow I must have thought that you can't have defaults in the generics of a struct 🤦
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.
Ralf, stop reading github while on vacation!!!
r? lcnr @bors r+ rollup |
Add `InterpCx::project_fields` I was hoping for a much bigger improvement and this is lukewarm at best ^^' Still, I think this makes sense.
Rollup of 18 pull requests Successful merges: - #144467 (rustdoc template font links only emit `crossorigin` when needed) - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - #144596 (libtest: print the type of test being run) - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - #144776 (`Printer` cleanups) - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - #144867 (Use `as_array` in PartialEq for arrays) - #144872 (Document Poisoning in `LazyCell` and `LazyLock`) - #144877 (coverage: Various small cleanups) - #144887 (`rust-analyzer` subtree update) - #144890 (Add `InterpCx::project_fields`) - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - #144905 (rustc-dev-guide subtree update) - #144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 17 pull requests Successful merges: - #144467 (rustdoc template font links only emit `crossorigin` when needed) - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - #144776 (`Printer` cleanups) - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - #144867 (Use `as_array` in PartialEq for arrays) - #144872 (Document Poisoning in `LazyCell` and `LazyLock`) - #144877 (coverage: Various small cleanups) - #144887 (`rust-analyzer` subtree update) - #144890 (Add `InterpCx::project_fields`) - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - #144905 (rustc-dev-guide subtree update) - #144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #144890 - WaffleLapkin:project_fields, r=lcnr Add `InterpCx::project_fields` I was hoping for a much bigger improvement and this is lukewarm at best ^^' Still, I think this makes sense.
Rollup of 17 pull requests Successful merges: - rust-lang/rust#144467 (rustdoc template font links only emit `crossorigin` when needed) - rust-lang/rust#144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - rust-lang/rust#144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - rust-lang/rust#144776 (`Printer` cleanups) - rust-lang/rust#144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - rust-lang/rust#144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - rust-lang/rust#144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - rust-lang/rust#144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - rust-lang/rust#144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - rust-lang/rust#144867 (Use `as_array` in PartialEq for arrays) - rust-lang/rust#144872 (Document Poisoning in `LazyCell` and `LazyLock`) - rust-lang/rust#144877 (coverage: Various small cleanups) - rust-lang/rust#144887 (`rust-analyzer` subtree update) - rust-lang/rust#144890 (Add `InterpCx::project_fields`) - rust-lang/rust#144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - rust-lang/rust#144905 (rustc-dev-guide subtree update) - rust-lang/rust#144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 17 pull requests Successful merges: - rust-lang/rust#144467 (rustdoc template font links only emit `crossorigin` when needed) - rust-lang/rust#144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - rust-lang/rust#144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - rust-lang/rust#144776 (`Printer` cleanups) - rust-lang/rust#144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - rust-lang/rust#144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - rust-lang/rust#144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - rust-lang/rust#144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - rust-lang/rust#144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - rust-lang/rust#144867 (Use `as_array` in PartialEq for arrays) - rust-lang/rust#144872 (Document Poisoning in `LazyCell` and `LazyLock`) - rust-lang/rust#144877 (coverage: Various small cleanups) - rust-lang/rust#144887 (`rust-analyzer` subtree update) - rust-lang/rust#144890 (Add `InterpCx::project_fields`) - rust-lang/rust#144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - rust-lang/rust#144905 (rustc-dev-guide subtree update) - rust-lang/rust#144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
// ... that contains a `NonNull`... (gladly, only a single field here) | ||
assert_eq!(nonnull_ptr.layout().fields.count(), 1); | ||
let raw_ptr = self.ecx().project_field(&nonnull_ptr, FieldIdx::ZERO)?; // the actual raw ptr | ||
|
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.
Why did you add some empty lines in the middle of the sentence?
(Not a big deal but not an improvement IMO either 🤷 )
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 think I did not notice // the actual raw ptr
part or that it connects to the next comment
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.
In general I find it difficult to read code which looks like
f(....);
// comment
g(....);
I.e. where the break between logical "blocks" is a comment without a newline.
(this possibly doesn't apply here due to the linked nature of the comments)
I was hoping for a much bigger improvement and this is lukewarm at best ^^'
Still, I think this makes sense.