mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Rollup merge of #131753 - compiler-errors:swap-secondary, r=jieyouxu
Unify `secondary_span` and `swap_secondary_and_primary` args in `note_type_err` Tiny tweak b/c working w `note_type_err` is kinda a mess.
This commit is contained in:
commit
80cbc6d40d
@ -592,14 +592,13 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
|
||||
&cause,
|
||||
hir.get_if_local(impl_m.def_id)
|
||||
.and_then(|node| node.fn_decl())
|
||||
.map(|decl| (decl.output.span(), Cow::from("return type in trait"))),
|
||||
.map(|decl| (decl.output.span(), Cow::from("return type in trait"), false)),
|
||||
Some(infer::ValuePairs::Terms(ExpectedFound {
|
||||
expected: trait_return_ty.into(),
|
||||
found: impl_return_ty.into(),
|
||||
})),
|
||||
terr,
|
||||
false,
|
||||
false,
|
||||
);
|
||||
return Err(diag.emit());
|
||||
}
|
||||
@ -1018,14 +1017,13 @@ fn report_trait_method_mismatch<'tcx>(
|
||||
infcx.err_ctxt().note_type_err(
|
||||
&mut diag,
|
||||
&cause,
|
||||
trait_err_span.map(|sp| (sp, Cow::from("type in trait"))),
|
||||
trait_err_span.map(|sp| (sp, Cow::from("type in trait"), false)),
|
||||
Some(infer::ValuePairs::PolySigs(ExpectedFound {
|
||||
expected: ty::Binder::dummy(trait_sig),
|
||||
found: ty::Binder::dummy(impl_sig),
|
||||
})),
|
||||
terr,
|
||||
false,
|
||||
false,
|
||||
);
|
||||
|
||||
diag.emit()
|
||||
@ -1825,14 +1823,13 @@ fn compare_const_predicate_entailment<'tcx>(
|
||||
infcx.err_ctxt().note_type_err(
|
||||
&mut diag,
|
||||
&cause,
|
||||
trait_c_span.map(|span| (span, Cow::from("type in trait"))),
|
||||
trait_c_span.map(|span| (span, Cow::from("type in trait"), false)),
|
||||
Some(infer::ValuePairs::Terms(ExpectedFound {
|
||||
expected: trait_ty.into(),
|
||||
found: impl_ty.into(),
|
||||
})),
|
||||
terr,
|
||||
false,
|
||||
false,
|
||||
);
|
||||
return Err(diag.emit());
|
||||
};
|
||||
|
@ -652,7 +652,6 @@ pub fn check_function_signature<'tcx>(
|
||||
})),
|
||||
err,
|
||||
false,
|
||||
false,
|
||||
);
|
||||
return Err(diag.emit());
|
||||
}
|
||||
|
@ -1114,7 +1114,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
None,
|
||||
Some(trace.values),
|
||||
e,
|
||||
false,
|
||||
true,
|
||||
);
|
||||
}
|
||||
|
@ -2302,7 +2302,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
|
||||
})),
|
||||
terr,
|
||||
false,
|
||||
false,
|
||||
);
|
||||
diag.emit();
|
||||
self.abort.set(true);
|
||||
|
@ -1127,18 +1127,14 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
/// the message in `secondary_span` as the primary label, and apply the message that would
|
||||
/// otherwise be used for the primary label on the `secondary_span` `Span`. This applies on
|
||||
/// E0271, like `tests/ui/issues/issue-39970.stderr`.
|
||||
#[instrument(
|
||||
level = "debug",
|
||||
skip(self, diag, secondary_span, swap_secondary_and_primary, prefer_label)
|
||||
)]
|
||||
#[instrument(level = "debug", skip(self, diag, secondary_span, prefer_label))]
|
||||
pub fn note_type_err(
|
||||
&self,
|
||||
diag: &mut Diag<'_>,
|
||||
cause: &ObligationCause<'tcx>,
|
||||
secondary_span: Option<(Span, Cow<'static, str>)>,
|
||||
secondary_span: Option<(Span, Cow<'static, str>, bool)>,
|
||||
mut values: Option<ValuePairs<'tcx>>,
|
||||
terr: TypeError<'tcx>,
|
||||
swap_secondary_and_primary: bool,
|
||||
prefer_label: bool,
|
||||
) {
|
||||
let span = cause.span();
|
||||
@ -1304,7 +1300,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
diag.span_note(span, msg);
|
||||
}
|
||||
};
|
||||
if let Some((sp, msg)) = secondary_span {
|
||||
if let Some((secondary_span, secondary_msg, swap_secondary_and_primary)) = secondary_span {
|
||||
if swap_secondary_and_primary {
|
||||
let terr = if let Some(infer::ValuePairs::Terms(ExpectedFound {
|
||||
expected, ..
|
||||
@ -1314,11 +1310,11 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
} else {
|
||||
terr.to_string(self.tcx)
|
||||
};
|
||||
label_or_note(sp, terr);
|
||||
label_or_note(span, msg);
|
||||
label_or_note(secondary_span, terr);
|
||||
label_or_note(span, secondary_msg);
|
||||
} else {
|
||||
label_or_note(span, terr.to_string(self.tcx));
|
||||
label_or_note(sp, msg);
|
||||
label_or_note(secondary_span, secondary_msg);
|
||||
}
|
||||
} else if let Some(values) = values
|
||||
&& let Some((e, f)) = values.ty()
|
||||
@ -1788,7 +1784,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
self.type_error_additional_suggestions(&trace, terr),
|
||||
);
|
||||
let mut diag = self.dcx().create_err(failure_code);
|
||||
self.note_type_err(&mut diag, &trace.cause, None, Some(trace.values), terr, false, false);
|
||||
self.note_type_err(&mut diag, &trace.cause, None, Some(trace.values), terr, false);
|
||||
diag
|
||||
}
|
||||
|
||||
|
@ -710,7 +710,6 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
None,
|
||||
TypeError::Sorts(ty::error::ExpectedFound::new(true, expected_ty, ct_ty)),
|
||||
false,
|
||||
false,
|
||||
);
|
||||
diag
|
||||
}
|
||||
@ -1435,6 +1434,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
cx.into_buffer()
|
||||
}
|
||||
))),
|
||||
true,
|
||||
)),
|
||||
_ => None,
|
||||
}
|
||||
@ -1452,7 +1452,6 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
|
||||
))
|
||||
}),
|
||||
err,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
self.note_obligation_cause(&mut diag, obligation);
|
||||
|
Loading…
Reference in New Issue
Block a user