Replace calls to ty::Const::{try_}eval in mir build/pattern analysis#130715
Replace calls to ty::Const::{try_}eval in mir build/pattern analysis#130715bors merged 1 commit intorust-lang:masterfrom
ty::Const::{try_}eval in mir build/pattern analysis#130715Conversation
|
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.
like... a definite, evaluatable numerical value.
There was a problem hiding this comment.
huh i dont think ive ever seen that word used like that
There was a problem hiding this comment.
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_usizerather than callingeval_target_usize.Regarding the
.expectcalls, 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