Skip to content

Commit 0a77709

Browse files
committed
Avoid matching on PatKind::Wild in write_struct_like
1 parent c9bd03c commit 0a77709

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

compiler/rustc_pattern_analysis/src/rustc.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,11 @@ impl<'p, 'tcx: 'p> RustcPatCtxt<'p, 'tcx> {
847847
let subpatterns = pat
848848
.iter_fields()
849849
.enumerate()
850-
.map(|(i, pat)| FieldPat { field: FieldIdx::new(i), pattern: hoist(pat) })
850+
.map(|(i, pat)| FieldPat {
851+
field: FieldIdx::new(i),
852+
pattern: hoist(pat),
853+
is_wildcard: would_print_as_wildcard(cx.tcx, pat),
854+
})
851855
.collect::<Vec<_>>();
852856

853857
PatKind::StructLike { enum_info, subpatterns }

compiler/rustc_pattern_analysis/src/rustc/print.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use rustc_target::abi::{FieldIdx, VariantIdx};
2121
pub(crate) struct FieldPat<'tcx> {
2222
pub(crate) field: FieldIdx,
2323
pub(crate) pattern: Box<Pat<'tcx>>,
24+
pub(crate) is_wildcard: bool,
2425
}
2526

2627
#[derive(Clone, Debug)]
@@ -139,12 +140,12 @@ fn write_struct_like<'tcx>(
139140
write!(f, " {{ ")?;
140141

141142
let mut printed = 0;
142-
for p in subpatterns {
143-
if let PatKind::Wild = p.pattern.kind {
143+
for &FieldPat { field, ref pattern, is_wildcard } in subpatterns {
144+
if is_wildcard {
144145
continue;
145146
}
146-
let name = variant.fields[p.field].name;
147-
write!(f, "{}{}: {}", start_or_comma(), name, p.pattern)?;
147+
let field_name = variant.fields[field].name;
148+
write!(f, "{}{field_name}: {pattern}", start_or_comma())?;
148149
printed += 1;
149150
}
150151

0 commit comments

Comments
 (0)