rust-lang-deprecated / error-chain

Error boilerplate for Rust
Apache License 2.0
729 stars 111 forks source link

Incomprehensible error message when adding error without arguments #248

Open eira-fransham opened 6 years ago

eira-fransham commented 6 years ago

When attempting to add a new variant to an existing error_chain Error, I found the following problem. I wanted to add an error that has no fields, and so I added a new error that looked similar to the following:

error_chain! {
    errors {
        Foo() {}
    }
}

Note the addition of the OutOfMemory variant. This causes the following error:

error: no rules expected the token `=>`
 --> src/main.rs:4:1
  |
4 | / error_chain! {
5 | |     errors {
6 | |         Foo() {}
7 | |     }
8 | | }
  | |_^
  |
  = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)

Of course, the => token isn't even in my invocation! The correct way to do this is the following:

error_chain! {
    errors {
        Foo {}
    }
}

In theory this should be simple to at least add a compilation error for, if not just simply allow.