Auto merge of #111913 - oli-obk:valtrees2, r=lcnr
Only rewrite valtree-constants to patterns and keep other constants opaque Now that we can reliably fall back to comparing constants with `PartialEq::eq` to the match scrutinee, we can 1. eagerly try to convert constants to valtrees 2. then deeply convert the valtree to a pattern 3. if the to-valtree conversion failed, create an "opaque constant" pattern. This PR specifically avoids any behavioral changes or major cleanups. What we can now do as follow ups is * move the two remaining call sites to `destructure_mir_constant` off that query * make valtree to pattern conversion infallible * this needs to be done after careful analysis of the effects. There may be user visible changes from that. based on https://github.com/rust-lang/rust/pull/111768
This commit is contained in:
commit
871b595202
21 changed files with 300 additions and 323 deletions
|
@ -1288,7 +1288,7 @@ pub fn decode_expn_id(
|
|||
decode_data: impl FnOnce(ExpnId) -> (ExpnData, ExpnHash),
|
||||
) -> ExpnId {
|
||||
if index == 0 {
|
||||
debug!("decode_expn_id: deserialized root");
|
||||
trace!("decode_expn_id: deserialized root");
|
||||
return ExpnId::root();
|
||||
}
|
||||
|
||||
|
@ -1321,7 +1321,7 @@ pub fn decode_syntax_context<D: Decoder, F: FnOnce(&mut D, u32) -> SyntaxContext
|
|||
) -> SyntaxContext {
|
||||
let raw_id: u32 = Decodable::decode(d);
|
||||
if raw_id == 0 {
|
||||
debug!("decode_syntax_context: deserialized root");
|
||||
trace!("decode_syntax_context: deserialized root");
|
||||
// The root is special
|
||||
return SyntaxContext::root();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue