Remove `PatKind::StructLike`

This commit is contained in:
Zalathar 2024-08-03 20:47:21 +10:00
parent 92eb159d04
commit ed3e38f336
2 changed files with 11 additions and 10 deletions

View File

@ -854,7 +854,16 @@ impl<'p, 'tcx: 'p> RustcPatCtxt<'p, 'tcx> {
})
.collect::<Vec<_>>();
PatKind::StructLike { enum_info, subpatterns }
let mut s = String::new();
print::write_struct_like(
&mut s,
self.tcx,
pat.ty().inner(),
&enum_info,
&subpatterns,
)
.unwrap();
PatKind::Print(s)
}
Ref => PatKind::Deref { subpattern: hoist(&pat.fields[0]) },
Slice(slice) => {

View File

@ -32,11 +32,6 @@ pub(crate) struct Pat<'tcx> {
#[derive(Clone, Debug)]
pub(crate) enum PatKind<'tcx> {
StructLike {
enum_info: EnumInfo<'tcx>,
subpatterns: Vec<FieldPat<'tcx>>,
},
Box {
subpattern: Box<Pat<'tcx>>,
},
@ -69,9 +64,6 @@ impl<'tcx> fmt::Display for Pat<'tcx> {
match self.kind {
PatKind::Never => write!(f, "!"),
PatKind::Box { ref subpattern } => write!(f, "box {subpattern}"),
PatKind::StructLike { ref enum_info, ref subpatterns } => {
ty::tls::with(|tcx| write_struct_like(f, tcx, self.ty, enum_info, subpatterns))
}
PatKind::Deref { ref subpattern } => write_ref_like(f, self.ty, subpattern),
PatKind::Constant { value } => write!(f, "{value}"),
PatKind::Range(ref range) => write!(f, "{range}"),
@ -104,7 +96,7 @@ pub(crate) enum EnumInfo<'tcx> {
NotEnum,
}
fn write_struct_like<'tcx>(
pub(crate) fn write_struct_like<'tcx>(
f: &mut impl fmt::Write,
tcx: TyCtxt<'_>,
ty: Ty<'tcx>,