Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/mir/lower/pattern_matching.rs')
-rw-r--r--crates/hir-ty/src/mir/lower/pattern_matching.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/crates/hir-ty/src/mir/lower/pattern_matching.rs b/crates/hir-ty/src/mir/lower/pattern_matching.rs
index 1120bb1c11..98c2e7c63b 100644
--- a/crates/hir-ty/src/mir/lower/pattern_matching.rs
+++ b/crates/hir-ty/src/mir/lower/pattern_matching.rs
@@ -108,7 +108,12 @@ impl MirLowerCtx<'_> {
current_else,
args,
*ellipsis,
- (0..subst.len(Interner)).map(|i| PlaceElem::TupleOrClosureField(i)),
+ (0..subst.len(Interner)).map(|i| {
+ PlaceElem::Field(Either::Right(TupleFieldId {
+ tuple: TupleId(!0), // Dummy as it is unused
+ index: i as u32,
+ }))
+ }),
&(&mut cond_place),
mode,
)?
@@ -239,7 +244,7 @@ impl MirLowerCtx<'_> {
);
} else {
let c = Operand::from_concrete_const(
- pattern_len.to_le_bytes().to_vec(),
+ pattern_len.to_le_bytes().into(),
MemoryMap::default(),
TyBuilder::usize(),
);
@@ -566,7 +571,10 @@ impl MirLowerCtx<'_> {
let field_id =
variant_data.field(&x.name).ok_or(MirLowerError::UnresolvedField)?;
Ok((
- PlaceElem::Field(FieldId { parent: v.into(), local_id: field_id }),
+ PlaceElem::Field(Either::Left(FieldId {
+ parent: v.into(),
+ local_id: field_id,
+ })),
x.pat,
))
})
@@ -574,10 +582,9 @@ impl MirLowerCtx<'_> {
self.pattern_match_adt(current, current_else, it.into_iter(), cond_place, mode)?
}
AdtPatternShape::Tuple { args, ellipsis } => {
- let fields = variant_data
- .fields()
- .iter()
- .map(|(x, _)| PlaceElem::Field(FieldId { parent: v.into(), local_id: x }));
+ let fields = variant_data.fields().iter().map(|(x, _)| {
+ PlaceElem::Field(Either::Left(FieldId { parent: v.into(), local_id: x }))
+ });
self.pattern_match_tuple_like(
current,
current_else,