Skip to content

Commit

Permalink
Rollup merge of rust-lang#65334 - GuillaumeGomez:long-err-explanation…
Browse files Browse the repository at this point in the history
…-E0575, r=kinnison

Add long error explanation for E0575

Part of rust-lang#61137.
  • Loading branch information
tmandry authored Oct 18, 2019
2 parents d913212 + 21d9258 commit a8ae1eb
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 2 deletions.
54 changes: 53 additions & 1 deletion src/librustc_resolve/error_codes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1735,6 +1735,59 @@ match eco {
```
"##,

E0575: r##"
Something other than a type or an associated type was given.
Erroneous code example:
```compile_fail,E0575
enum Rick { Morty }
let _: <u8 as Rick>::Morty; // error!
trait Age {
type Empire;
fn Mythology() {}
}
impl Age for u8 {
type Empire = u16;
}
let _: <u8 as Age>::Mythology; // error!
```
In both cases, we're declaring a variable (called `_`) and we're giving it a
type. However, `<u8 as Rick>::Morty` and `<u8 as Age>::Mythology` aren't types,
therefore the compiler throws an error.
`<u8 as Rick>::Morty` is an enum variant, you cannot use a variant as a type,
you have to use the enum directly:
```
enum Rick { Morty }
let _: Rick; // ok!
```
`<u8 as Age>::Mythology` is a trait method, which is definitely not a type.
However, the `Age` trait provides an associated type `Empire` which can be
used as a type:
```
trait Age {
type Empire;
fn Mythology() {}
}
impl Age for u8 {
type Empire = u16;
}
let _: <u8 as Age>::Empire; // ok!
```
"##,

E0603: r##"
A private item was used outside its scope.
Expand Down Expand Up @@ -1862,7 +1915,6 @@ struct Foo<X = Box<Self>> {
// E0427, merged into 530
// E0467, removed
// E0470, removed
E0575,
E0576,
E0577,
E0578,
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/ufcs/ufcs-partially-resolved.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -200,5 +200,5 @@ LL | <u8 as Dr>::X::N;

error: aborting due to 32 previous errors

Some errors have detailed explanations: E0223, E0433, E0599.
Some errors have detailed explanations: E0223, E0433, E0575, E0599.
For more information about an error, try `rustc --explain E0223`.

0 comments on commit a8ae1eb

Please sign in to comment.