show suggestion to replace generic bounds with associated types in more cases
This commit is contained in:
parent
878c7833f6
commit
decc04dbfb
6 changed files with 82 additions and 24 deletions
|
|
@ -13,7 +13,7 @@ error[E0107]: this trait takes 0 generic arguments but 1 generic argument was su
|
|||
--> $DIR/issue-87493.rs:8:8
|
||||
|
|
||||
LL | T: MyTrait<Assoc == S::Assoc>,
|
||||
| ^^^^^^^------------------- help: remove these generics
|
||||
| ^^^^^^^ ----------------- help: replace the generic bound with the associated type: `Assoc = Assoc == S::Assoc`
|
||||
| |
|
||||
| expected 0 generic arguments
|
||||
|
|
||||
|
|
|
|||
|
|
@ -47,4 +47,14 @@ struct Baz<'a, 'b, 'c> {
|
|||
//~| HELP remove this lifetime argument
|
||||
}
|
||||
|
||||
pub trait T {
|
||||
type A;
|
||||
type B;
|
||||
}
|
||||
|
||||
fn trait_bound_generic<I: T<u8, u16>>(_i: I) {
|
||||
//~^ ERROR this trait takes 0 generic arguments
|
||||
//~| HELP replace the generic bounds with the associated types
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -128,6 +128,22 @@ note: struct defined here, with 0 lifetime parameters
|
|||
LL | struct Quux<T>(T);
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
error[E0107]: this trait takes 0 generic arguments but 2 generic arguments were supplied
|
||||
--> $DIR/E0107.rs:55:27
|
||||
|
|
||||
LL | fn trait_bound_generic<I: T<u8, u16>>(_i: I) {
|
||||
| ^ expected 0 generic arguments
|
||||
|
|
||||
note: trait defined here, with 0 generic parameters
|
||||
--> $DIR/E0107.rs:50:11
|
||||
|
|
||||
LL | pub trait T {
|
||||
| ^
|
||||
help: replace the generic bounds with the associated types
|
||||
|
|
||||
LL | fn trait_bound_generic<I: T<A = u8, B = u16>>(_i: I) {
|
||||
| ~~~~~~ ~~~~~~~
|
||||
|
||||
error: aborting due to 10 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0107`.
|
||||
|
|
|
|||
|
|
@ -2,15 +2,17 @@ error[E0107]: this trait takes 2 generic arguments but 4 generic arguments were
|
|||
--> $DIR/use-type-argument-instead-of-assoc-type.rs:7:16
|
||||
|
|
||||
LL | i: Box<dyn T<usize, usize, usize, usize, B=usize>>,
|
||||
| ^ ------------ help: remove these generic arguments
|
||||
| |
|
||||
| expected 2 generic arguments
|
||||
| ^ expected 2 generic arguments
|
||||
|
|
||||
note: trait defined here, with 2 generic parameters: `X`, `Y`
|
||||
--> $DIR/use-type-argument-instead-of-assoc-type.rs:1:11
|
||||
|
|
||||
LL | pub trait T<X, Y> {
|
||||
| ^ - -
|
||||
help: replace the generic bounds with the associated types
|
||||
|
|
||||
LL | i: Box<dyn T<usize, usize, A = usize, C = usize, B=usize>>,
|
||||
| ~~~~~~~~~ ~~~~~~~~~
|
||||
|
||||
error[E0191]: the value of the associated types `A` (from trait `T`), `C` (from trait `T`) must be specified
|
||||
--> $DIR/use-type-argument-instead-of-assoc-type.rs:7:16
|
||||
|
|
@ -23,11 +25,6 @@ LL | type C;
|
|||
...
|
||||
LL | i: Box<dyn T<usize, usize, usize, usize, B=usize>>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated types `A`, `C` must be specified
|
||||
|
|
||||
help: specify the associated types
|
||||
|
|
||||
LL | i: Box<dyn T<usize, usize, A = usize, C = usize, B=usize>>,
|
||||
| ~~~~~~~~~ ~~~~~~~~~
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue