Avoid a Ty::new_misc_error when an ErrorGuaranteed is available

This commit is contained in:
Oli Scherer 2024-06-12 14:25:34 +00:00
parent 9065889ee6
commit 62990713ce
2 changed files with 5 additions and 5 deletions

View File

@ -660,8 +660,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
})
}
pub(crate) fn err_args(&self, len: usize) -> Vec<Ty<'tcx>> {
let ty_error = Ty::new_misc_error(self.tcx);
pub(crate) fn err_args(&self, len: usize, guar: ErrorGuaranteed) -> Vec<Ty<'tcx>> {
let ty_error = Ty::new_error(self.tcx, guar);
vec![ty_error; len]
}

View File

@ -123,7 +123,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
Err(guar) => Err(guar),
};
if let Err(guar) = has_error {
let err_inputs = self.err_args(args_no_rcvr.len());
let err_inputs = self.err_args(args_no_rcvr.len(), guar);
let err_inputs = match tuple_arguments {
DontTupleArguments => err_inputs,
@ -237,7 +237,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
_ => {
// Otherwise, there's a mismatch, so clear out what we're expecting, and set
// our input types to err_args so we don't blow up the error messages
struct_span_code_err!(
let guar = struct_span_code_err!(
tcx.dcx(),
call_span,
E0059,
@ -245,7 +245,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
for the function trait is neither a tuple nor unit"
)
.emit();
(self.err_args(provided_args.len()), None)
(self.err_args(provided_args.len(), guar), None)
}
}
} else {