Skip to content

Commit

Permalink
Use param.name.indent().span if trait bounds not exists.
Browse files Browse the repository at this point in the history
To fix the following issue.
Diagnostic suggests adding : ?Sized in an incorrect place if a type parameter default is present
  • Loading branch information
OdenShirataki committed Feb 11, 2024
1 parent 0cbef48 commit fecdcdc
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -2993,7 +2993,7 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
{
(s, " +")
} else {
(span.shrink_to_hi(), ":")
(param.name.ident().span.shrink_to_hi(), ":")
};
err.span_suggestion_verbose(
span,
Expand Down
9 changes: 9 additions & 0 deletions tests/ui/traits/issue-120878.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
fn main() {
struct StructA<A, B = A> {
_marker: std::marker::PhantomData<fn() -> (A, B)>,
}

struct StructB {
a: StructA<isize, [u8]>,
}
}
18 changes: 18 additions & 0 deletions tests/ui/traits/issue-120878.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
--> $DIR\issue-120878.rs:7:12
|
LL | a: StructA<isize, [u8]>,
| ^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `[u8]`
note: required by an implicit `Sized` bound in `StructA`
--> $DIR\issue-120878.rs:2:23
|
LL | struct StructA<A, B =A> {
| ^^^^ required by the implicit `Sized` requirement on this type parameter in `StructA`
help: consider relaxing the implicit `Sized` restriction
|
LL | struct StructA<A, B: ?Sized = A> {
| ++++++++

For more information about this error, try `rustc --explain E0277`.

0 comments on commit fecdcdc

Please sign in to comment.