1
Fork 0

Replace some Option<Diag> with Result<(), Diag>

This commit is contained in:
Oli Scherer 2024-06-12 15:11:49 +00:00
parent ece3e3e4c1
commit e8d6170b8a

View file

@ -1582,21 +1582,21 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
} }
match (inexistent_fields_err, unmentioned_err) { match (inexistent_fields_err, unmentioned_err) {
(Some(i), Some(u)) => { (Some(i), Some(u)) => {
if let Some(e) = self.error_tuple_variant_as_struct_pat(pat, fields, variant) { if let Err(e) = self.error_tuple_variant_as_struct_pat(pat, fields, variant) {
// We don't want to show the nonexistent fields error when this was // We don't want to show the nonexistent fields error when this was
// `Foo { a, b }` when it should have been `Foo(a, b)`. // `Foo { a, b }` when it should have been `Foo(a, b)`.
i.delay_as_bug(); i.delay_as_bug();
u.delay_as_bug(); u.delay_as_bug();
Err(e.emit()) Err(e)
} else { } else {
i.emit(); i.emit();
Err(u.emit()) Err(u.emit())
} }
} }
(None, Some(u)) => { (None, Some(u)) => {
if let Some(e) = self.error_tuple_variant_as_struct_pat(pat, fields, variant) { if let Err(e) = self.error_tuple_variant_as_struct_pat(pat, fields, variant) {
u.delay_as_bug(); u.delay_as_bug();
Err(e.emit()) Err(e)
} else { } else {
Err(u.emit()) Err(u.emit())
} }
@ -1795,14 +1795,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
pat: &Pat<'_>, pat: &Pat<'_>,
fields: &'tcx [hir::PatField<'tcx>], fields: &'tcx [hir::PatField<'tcx>],
variant: &ty::VariantDef, variant: &ty::VariantDef,
) -> Option<Diag<'tcx>> { ) -> Result<(), ErrorGuaranteed> {
if let (Some(CtorKind::Fn), PatKind::Struct(qpath, pattern_fields, ..)) = if let (Some(CtorKind::Fn), PatKind::Struct(qpath, pattern_fields, ..)) =
(variant.ctor_kind(), &pat.kind) (variant.ctor_kind(), &pat.kind)
{ {
let is_tuple_struct_match = !pattern_fields.is_empty() let is_tuple_struct_match = !pattern_fields.is_empty()
&& pattern_fields.iter().map(|field| field.ident.name.as_str()).all(is_number); && pattern_fields.iter().map(|field| field.ident.name.as_str()).all(is_number);
if is_tuple_struct_match { if is_tuple_struct_match {
return None; return Ok(());
} }
let path = rustc_hir_pretty::qpath_to_string(&self.tcx, qpath); let path = rustc_hir_pretty::qpath_to_string(&self.tcx, qpath);
@ -1830,9 +1830,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
format!("({sugg})"), format!("({sugg})"),
appl, appl,
); );
return Some(err); return Err(err.emit());
} }
None Ok(())
} }
fn get_suggested_tuple_struct_pattern( fn get_suggested_tuple_struct_pattern(