Opaque type locations in error message for clarity.
This commit is contained in:
parent
b50520835f
commit
9483db5052
@ -1136,12 +1136,19 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
|||||||
if let Some((expected, found)) = expected_found {
|
if let Some((expected, found)) = expected_found {
|
||||||
match (terr, is_simple_error, expected == found) {
|
match (terr, is_simple_error, expected == found) {
|
||||||
(&TypeError::Sorts(ref values), false, true) => {
|
(&TypeError::Sorts(ref values), false, true) => {
|
||||||
|
let sort_string = | a_type: Ty<'tcx> |
|
||||||
|
if let ty::Opaque(def_id, _) = a_type.sty {
|
||||||
|
format!(" (opaque type at {})", self.tcx.sess.source_map()
|
||||||
|
.mk_substr_filename(self.tcx.def_span(def_id)))
|
||||||
|
} else {
|
||||||
|
format!(" ({})", a_type.sort_string(self.tcx))
|
||||||
|
};
|
||||||
diag.note_expected_found_extra(
|
diag.note_expected_found_extra(
|
||||||
&"type",
|
&"type",
|
||||||
expected,
|
expected,
|
||||||
found,
|
found,
|
||||||
&format!(" ({})", values.expected.sort_string(self.tcx)),
|
&sort_string(values.expected),
|
||||||
&format!(" ({})", values.found.sort_string(self.tcx)),
|
&sort_string(values.found),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
(_, false, _) => {
|
(_, false, _) => {
|
||||||
|
@ -10,8 +10,8 @@ LL | | thing_two()
|
|||||||
LL | | }.await
|
LL | | }.await
|
||||||
| |_____- if and else have incompatible types
|
| |_____- if and else have incompatible types
|
||||||
|
|
|
|
||||||
= note: expected type `impl std::future::Future` (opaque type)
|
= note: expected type `impl std::future::Future` (opaque type at <$DIR/opaque-type-error.rs:8:19>)
|
||||||
found type `impl std::future::Future` (opaque type)
|
found type `impl std::future::Future` (opaque type at <$DIR/opaque-type-error.rs:12:19>)
|
||||||
= note: distinct uses of `impl Trait` result in different opaque types
|
= note: distinct uses of `impl Trait` result in different opaque types
|
||||||
= help: if both `Future`s have the same `Output` type, consider `.await`ing on both of them
|
= help: if both `Future`s have the same `Output` type, consider `.await`ing on both of them
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user