Skip to content

Commit

Permalink
Special case the situation where the previous span is the same as the…
Browse files Browse the repository at this point in the history
… new one
  • Loading branch information
oli-obk committed Feb 9, 2022
1 parent 91fa570 commit dd7a93d
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 25 deletions.
6 changes: 5 additions & 1 deletion compiler/rustc_typeck/src/collect/type_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,11 @@ fn find_opaque_ty_constraints(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Ty<'_> {
concrete_type.span,
format!("expected `{}`, got `{}`", prev.ty, concrete_type.ty),
);
err.span_note(prev.span, "previous use here");
if prev.span == concrete_type.span {
err.span_label(prev.span, "this expression supplies two conflicting concrete types for the same opaque type");
} else {
err.span_note(prev.span, "previous use here");
}
err.emit();
}
} else {
Expand Down
9 changes: 3 additions & 6 deletions src/test/ui/impl-trait/issue-86465.stderr
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
error: concrete type differs from previous defining opaque type use
--> $DIR/issue-86465.rs:6:5
|
LL | (a, a)
| ^^^^^^ expected `&'a u32`, got `&'b u32`
|
note: previous use here
--> $DIR/issue-86465.rs:6:5
|
LL | (a, a)
| ^^^^^^
| |
| expected `&'a u32`, got `&'b u32`
| this expression supplies two conflicting concrete types for the same opaque type

error: aborting due to previous error

Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
error: concrete type differs from previous defining opaque type use
--> $DIR/multiple-def-uses-in-one-fn-infer.rs:10:5
|
LL | (42_i64, 60)
| ^^^^^^^^^^^^ expected `i64`, got `i32`
|
note: previous use here
--> $DIR/multiple-def-uses-in-one-fn-infer.rs:10:5
|
LL | (42_i64, 60)
| ^^^^^^^^^^^^
| |
| expected `i64`, got `i32`
| this expression supplies two conflicting concrete types for the same opaque type

error: aborting due to previous error

Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
error: concrete type differs from previous defining opaque type use
--> $DIR/multiple-def-uses-in-one-fn-lifetimes.rs:6:5
|
LL | (i, i)
| ^^^^^^ expected `&'a i32`, got `&'b i32`
|
note: previous use here
--> $DIR/multiple-def-uses-in-one-fn-lifetimes.rs:6:5
|
LL | (i, i)
| ^^^^^^
| |
| expected `&'a i32`, got `&'b i32`
| this expression supplies two conflicting concrete types for the same opaque type

error: aborting due to previous error

Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
error: concrete type differs from previous defining opaque type use
--> $DIR/multiple-def-uses-in-one-fn2.rs:10:5
|
LL | (a.clone(), a)
| ^^^^^^^^^^^^^^ expected `A`, got `B`
|
note: previous use here
--> $DIR/multiple-def-uses-in-one-fn2.rs:10:5
|
LL | (a.clone(), a)
| ^^^^^^^^^^^^^^
| |
| expected `A`, got `B`
| this expression supplies two conflicting concrete types for the same opaque type

error: aborting due to previous error

0 comments on commit dd7a93d

Please sign in to comment.