-
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
Replace calls to ty::Const::{try_}eval
in mir build/pattern analysis
#130715
Conversation
Some changes occurred in match lowering cc @Nadrieril Some changes occurred in match checking cc @Nadrieril Some changes occurred in exhaustiveness checking cc @Nadrieril |
I am thoroughly pinged 😁 Out of curiosity, what's GCE/mGCE? |
GCE = Generic const expressions, like mGCE = minimal generic const expressions, which is a subset of GCE tha Boxy wants to stabilize, which AFAICT is limited to things like Regardless, this shouldn't affect stable. |
ty::Array(_, length) => ( | ||
length | ||
.try_to_target_usize(tcx) | ||
.expect("expected len of array pat to be definite"), |
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.
"definite"?
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.
like... a definite, evaluatable numerical value.
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.
huh i dont think ive ever seen that word used like that
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.
If you have a better suggestion then LMK lol
@bors r+ rollup |
…al, r=BoxyUwU Replace calls to `ty::Const::{try_}eval` in mir build/pattern analysis We normalize consts in writeback: rust-lang#130645. This means that consts are gonna be as normalized as they're ever gonna get in MIR building and pattern analysis. Therefore we can just use `try_to_target_usize` rather than calling `eval_target_usize`. Regarding the `.expect` calls, I'm not totally certain whether they're correct given rigid unevaluated consts. But this PR shouldn't make *more* ICEs occur; we may have to squash these ICEs when mGCE comes around, tho 😺 r? `@BoxyUwU`
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#122565 (Try to write the panic message with a single `write_all` call) - rust-lang#129550 (Add str.as_str() for easy Deref to string slices) - rust-lang#130659 (Support `char::encode_utf16` in const scenarios.) - rust-lang#130705 (No longer mark RTN as incomplete) - rust-lang#130712 (Don't call `ty::Const::normalize` in error reporting) - rust-lang#130713 (Mark `u8::make_ascii_uppercase` and `u8::make_ascii_lowercase` as const.) - rust-lang#130714 (Introduce `structurally_normalize_const`, use it in `rustc_hir_typeck`) - rust-lang#130715 (Replace calls to `ty::Const::{try_}eval` in mir build/pattern analysis) r? `@ghost` `@rustbot` modify labels: rollup
…al, r=BoxyUwU Replace calls to `ty::Const::{try_}eval` in mir build/pattern analysis We normalize consts in writeback: rust-lang#130645. This means that consts are gonna be as normalized as they're ever gonna get in MIR building and pattern analysis. Therefore we can just use `try_to_target_usize` rather than calling `eval_target_usize`. Regarding the `.expect` calls, I'm not totally certain whether they're correct given rigid unevaluated consts. But this PR shouldn't make *more* ICEs occur; we may have to squash these ICEs when mGCE comes around, tho 😺
…iaskrgr Rollup of 10 pull requests Successful merges: - rust-lang#129550 (Add str.as_str() for easy Deref to string slices) - rust-lang#130344 (Handle unsized consts with type `str` in v0 symbol mangling) - rust-lang#130659 (Support `char::encode_utf16` in const scenarios.) - rust-lang#130705 (No longer mark RTN as incomplete) - rust-lang#130712 (Don't call `ty::Const::normalize` in error reporting) - rust-lang#130713 (Mark `u8::make_ascii_uppercase` and `u8::make_ascii_lowercase` as const.) - rust-lang#130714 (Introduce `structurally_normalize_const`, use it in `rustc_hir_typeck`) - rust-lang#130715 (Replace calls to `ty::Const::{try_}eval` in mir build/pattern analysis) - rust-lang#130723 (Add test for `available_parallelism()`) - rust-lang#130726 (tests: Remove spuriously failing vec-tryinto-array codegen test) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#130715 - compiler-errors:mir-build-const-eval, r=BoxyUwU Replace calls to `ty::Const::{try_}eval` in mir build/pattern analysis We normalize consts in writeback: rust-lang#130645. This means that consts are gonna be as normalized as they're ever gonna get in MIR building and pattern analysis. Therefore we can just use `try_to_target_usize` rather than calling `eval_target_usize`. Regarding the `.expect` calls, I'm not totally certain whether they're correct given rigid unevaluated consts. But this PR shouldn't make *more* ICEs occur; we may have to squash these ICEs when mGCE comes around, tho 😺
We normalize consts in writeback: #130645. This means that consts are gonna be as normalized as they're ever gonna get in MIR building and pattern analysis. Therefore we can just use
try_to_target_usize
rather than callingeval_target_usize
.Regarding the
.expect
calls, I'm not totally certain whether they're correct given rigid unevaluated consts. But this PR shouldn't make more ICEs occur; we may have to squash these ICEs when mGCE comes around, tho 😺r? @BoxyUwU