Rollup merge of #95364 - GuillaumeGomez:long-error-explanation-e0667, r=Dylan-DPC

Add long error explanation for E0667

Part of #61137.
This commit is contained in:
Dylan DPC 2022-03-27 22:51:40 +02:00 committed by GitHub
commit dafc29dd72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 2 deletions

View file

@ -394,6 +394,7 @@ E0663: include_str!("./error_codes/E0663.md"),
E0664: include_str!("./error_codes/E0664.md"),
E0665: include_str!("./error_codes/E0665.md"),
E0666: include_str!("./error_codes/E0666.md"),
E0667: include_str!("./error_codes/E0667.md"),
E0668: include_str!("./error_codes/E0668.md"),
E0669: include_str!("./error_codes/E0669.md"),
E0670: include_str!("./error_codes/E0670.md"),
@ -633,7 +634,6 @@ E0787: include_str!("./error_codes/E0787.md"),
// attribute
E0640, // infer outlives requirements
// E0645, // trait aliases not finished
E0667, // `impl Trait` in projections
// E0694, // an unknown tool name found in scoped attributes
// E0702, // replaced with a generic attribute input check
// E0707, // multiple elided lifetimes used in arguments of `async fn`

View file

@ -0,0 +1,18 @@
`impl Trait` is not allowed in path parameters.
Erroneous code example:
```compile_fail,E0667
fn some_fn(mut x: impl Iterator) -> <impl Iterator>::Item { // error!
x.next().unwrap()
}
```
You cannot use `impl Trait` in path parameters. If you want something
equivalent, you can do this instead:
```
fn some_fn<T: Iterator>(mut x: T) -> T::Item { // ok!
x.next().unwrap()
}
```

View file

@ -30,4 +30,5 @@ LL | fn projection_is_disallowed(x: impl Iterator) -> <impl Iterator>::Item {
error: aborting due to 5 previous errors
For more information about this error, try `rustc --explain E0223`.
Some errors have detailed explanations: E0223, E0667.
For more information about an error, try `rustc --explain E0223`.

View file

@ -6,3 +6,4 @@ LL | pub fn demo(_: impl Quux<(), Assoc=<() as Quux<impl Bar>>::Assoc>) { }
error: aborting due to previous error
For more information about this error, try `rustc --explain E0667`.