Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Point at enclosing match when expecting () in arm #64825

Merged
merged 3 commits into from
Sep 29, 2019

Conversation

estebank
Copy link
Contributor

When encountering code like the following:

fn main() {
    match 3 {
        4 => 1,
        3 => {
            println!("Yep it maches.");
            2
        }
        _ => 2
    }
    println!("Bye!")
}

point at the enclosing match expression and suggest ignoring the
returned value:

error[E0308]: mismatched types
  --> $DIR/match-needing-semi.rs:8:13
   |
LL | /     match 3 {
LL | |         4 => 1,
LL | |         3 => {
LL | |             2
   | |             ^ expected (), found integer
LL | |         }
LL | |         _ => 2
LL | |     }
   | |     -- help: consider using a semicolon here
   | |_____|
   |       expected this to be `()`
   |
   = note: expected type `()`
              found type `{integer}

Fix #40799.

@rust-highfive
Copy link
Collaborator

r? @zackmdavis

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Sep 27, 2019
@estebank

This comment has been minimized.

@rust-highfive

This comment has been minimized.

src/librustc/hir/map/mod.rs Show resolved Hide resolved
src/librustc_typeck/check/coercion.rs Show resolved Hide resolved
src/librustc_typeck/check/mod.rs Outdated Show resolved Hide resolved
src/librustc_typeck/check/coercion.rs Outdated Show resolved Hide resolved
src/test/ui/suggestions/match-needing-semi.fixed Outdated Show resolved Hide resolved
@estebank estebank force-pushed the match-unit branch 3 times, most recently from 1d90402 to 8a508ce Compare September 28, 2019 01:49
When encountering code like the following:

```rust
fn main() {
    match 3 {
        4 => 1,
        3 => {
            println!("Yep it maches.");
            2
        }
        _ => 2
    }
    println!("Bye!")
}
```

point at the enclosing `match` expression and suggest ignoring the
returned value:

```
error[E0308]: mismatched types
  --> $DIR/match-needing-semi.rs:8:13
   |
LL | /     match 3 {
LL | |         4 => 1,
LL | |         3 => {
LL | |             2
   | |             ^ expected (), found integer
LL | |         }
LL | |         _ => 2
LL | |     }
   | |     -- help: consider using a semicolon here
   | |_____|
   |       expected this to be `()`
   |
   = note: expected type `()`
              found type `{integer}
```

Fix rust-lang#40799.
@Centril
Copy link
Contributor

Centril commented Sep 29, 2019

r? @Centril @bors r+

@bors
Copy link
Contributor

bors commented Sep 29, 2019

📌 Commit c861e24 has been approved by Centril

@rust-highfive rust-highfive assigned Centril and unassigned zackmdavis Sep 29, 2019
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 29, 2019
Centril added a commit to Centril/rust that referenced this pull request Sep 29, 2019
Point at enclosing match when expecting `()` in arm

When encountering code like the following:

```rust
fn main() {
    match 3 {
        4 => 1,
        3 => {
            println!("Yep it maches.");
            2
        }
        _ => 2
    }
    println!("Bye!")
}
```

point at the enclosing `match` expression and suggest ignoring the
returned value:

```
error[E0308]: mismatched types
  --> $DIR/match-needing-semi.rs:8:13
   |
LL | /     match 3 {
LL | |         4 => 1,
LL | |         3 => {
LL | |             2
   | |             ^ expected (), found integer
LL | |         }
LL | |         _ => 2
LL | |     }
   | |     -- help: consider using a semicolon here
   | |_____|
   |       expected this to be `()`
   |
   = note: expected type `()`
              found type `{integer}
```

Fix rust-lang#40799.
Centril added a commit to Centril/rust that referenced this pull request Sep 29, 2019
Point at enclosing match when expecting `()` in arm

When encountering code like the following:

```rust
fn main() {
    match 3 {
        4 => 1,
        3 => {
            println!("Yep it maches.");
            2
        }
        _ => 2
    }
    println!("Bye!")
}
```

point at the enclosing `match` expression and suggest ignoring the
returned value:

```
error[E0308]: mismatched types
  --> $DIR/match-needing-semi.rs:8:13
   |
LL | /     match 3 {
LL | |         4 => 1,
LL | |         3 => {
LL | |             2
   | |             ^ expected (), found integer
LL | |         }
LL | |         _ => 2
LL | |     }
   | |     -- help: consider using a semicolon here
   | |_____|
   |       expected this to be `()`
   |
   = note: expected type `()`
              found type `{integer}
```

Fix rust-lang#40799.
bors added a commit that referenced this pull request Sep 29, 2019
Rollup of 6 pull requests

Successful merges:

 - #64691 (Point at definition when misusing ADT)
 - #64735 (Add long error explanation for E0533)
 - #64825 (Point at enclosing match when expecting `()` in arm)
 - #64858 (Add support for relating slices in `super_relate_consts`)
 - #64894 (syntax: fix dropping of attribute on first param of non-method assocated fn)
 - #64898 (fixed typo)

Failed merges:

r? @ghost
@bors bors merged commit c861e24 into rust-lang:master Sep 29, 2019
@Manishearth
Copy link
Member

So this is breaking clippy tests since we rely on this span to test if for loops are coming from a macro. Might be able to work around this, but it could be tricky.

@Manishearth
Copy link
Member

Ah, figured it out.

bors added a commit to rust-lang/rust-clippy that referenced this pull request Oct 1, 2019
Rustup to rustc 1.40.0-nightly (702b45e40 2019-10-01)

Broken by rust-lang/rust#64825

r? @yaahc @phansch
bors added a commit to rust-lang/rust-clippy that referenced this pull request Oct 1, 2019
Rustup to rustc 1.40.0-nightly (702b45e40 2019-10-01)

Broken by rust-lang/rust#64825

r? @yaahc @phansch
@estebank
Copy link
Contributor Author

estebank commented Oct 1, 2019

Cool!

bors added a commit to rust-lang/rust-clippy that referenced this pull request Oct 1, 2019
Rustup to rustc 1.40.0-nightly (702b45e40 2019-10-01)

Broken by rust-lang/rust#64825

changelog: none

r? @yaahc @phansch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Incorrect parser error when match statement is missing its ;
6 participants