]> git.lizzy.rs Git - rust.git/commit
Auto merge of #47232 - keatinge:master, r=petrochenkov
authorbors <bors@rust-lang.org>
Mon, 8 Jan 2018 07:11:47 +0000 (07:11 +0000)
committerbors <bors@rust-lang.org>
Mon, 8 Jan 2018 07:11:47 +0000 (07:11 +0000)
commit1b193de98af5b8c6e2b50908ea64323b9095a1a4
treeb083dc1b0bb9d6314f5892129a0efe5200bfde56
parent795594cd8ce3272bd6b1ebf7e1b7f33a5a86e3ac
parent6aafdc3781c7adca6270b8e712152bed160b6071
Auto merge of #47232 - keatinge:master, r=petrochenkov

Add help message for incorrect pattern syntax

When I was getting started with rust I often made the mistake of using `||` instead of `|` to match multiple patterns and spent a long time staring at my code wondering what was wrong.

for example:

```
fn main() {
    let x = 1;

    match x {
        1 || 2 => println!("1 or 2"),
        _ => println!("Something else"),
    }
}

```

If you compile this with current rustc you will see

```
error: expected one of `...`, `..=`, `..`, `=>`, `if`, or `|`, found `||`
 --> test.rs:5:11
  |
5 |         1 || 2 => println!("1 or 2"),
  |          -^^ unexpected token
  |          |
  |          expected one of `...`, `..=`, `..`, `=>`, `if`, or `|` here

error: aborting due to previous error
```

With my proposed change it will show:
```
error: unexpected token `||` after pattern
 --> test.rs:5:11
  |
5 |         1 || 2 => println!("1 or 2"),
  |           ^^
  |
  = help: did you mean to use `|` to specify multiple patterns instead?

error: aborting due to previous error
```
src/libsyntax/parse/parser.rs