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

commented Sep 27, 2019

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

This comment has been minimized.

Copy link
Collaborator

commented Sep 27, 2019

r? @zackmdavis

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

@estebank

This comment was marked as resolved.

Copy link
Contributor Author

commented Sep 27, 2019

Needs to be rebased on top of #64802.

@rust-highfive

This comment was marked as resolved.

Copy link
Collaborator

commented Sep 27, 2019

The job mingw-check of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-27T00:28:39.5373079Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-27T00:28:40.5369739Z ##[command]git config gc.auto 0
2019-09-27T00:28:40.5376089Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-27T00:28:40.5380705Z ##[command]git config --get-all http.proxy
2019-09-27T00:28:40.5385780Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64825/merge:refs/remotes/pull/64825/merge
---
2019-09-27T00:36:29.9685066Z     Checking syntax_pos v0.0.0 (/checkout/src/libsyntax_pos)
2019-09-27T00:36:31.4229221Z     Checking rustc_errors v0.0.0 (/checkout/src/librustc_errors)
2019-09-27T00:36:32.6777974Z     Checking fmt_macros v0.0.0 (/checkout/src/libfmt_macros)
2019-09-27T00:36:45.5729662Z     Checking syntax_ext v0.0.0 (/checkout/src/libsyntax_ext)
2019-09-27T00:36:48.1092918Z error[E0433]: failed to resolve: use of undeclared type or module `ParentHirIterator`
2019-09-27T00:36:48.1093320Z    --> src/librustc/hir/map/mod.rs:808:26
2019-09-27T00:36:48.1093592Z     |
2019-09-27T00:36:48.1100249Z 808 |         for (_, node) in ParentHirIterator::new(hir_id, &self) {
2019-09-27T00:36:48.1100605Z     |                          ^^^^^^^^^^^^^^^^^ use of undeclared type or module `ParentHirIterator`
2019-09-27T00:37:11.3405807Z error: aborting due to previous error
2019-09-27T00:37:11.3406246Z 
2019-09-27T00:37:11.3406566Z For more information about this error, try `rustc --explain E0433`.
2019-09-27T00:37:11.5160712Z error: could not compile `rustc`.
---
2019-09-27T00:37:11.5249203Z == clock drift check ==
2019-09-27T00:37:11.5268682Z   local time: Fri Sep 27 00:37:11 UTC 2019
2019-09-27T00:37:12.3720532Z   network time: Fri, 27 Sep 2019 00:37:12 GMT
2019-09-27T00:37:12.3725779Z == end clock drift check ==
2019-09-27T00:37:13.1844141Z ##[error]Bash exited with code '1'.
2019-09-27T00:37:13.1908375Z ##[section]Starting: Checkout
2019-09-27T00:37:13.1910943Z ==============================================================================
2019-09-27T00:37:13.1911000Z Task         : Get sources
2019-09-27T00:37:13.1911065Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

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 estebank:match-unit branch 3 times, most recently from 1d90402 to 8a508ce Sep 28, 2019
estebank added 3 commits Sep 27, 2019
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 #40799.
@estebank estebank force-pushed the estebank:match-unit branch from 8a508ce to c861e24 Sep 28, 2019
@Centril

This comment has been minimized.

Copy link
Member

commented Sep 29, 2019

r? @Centril @bors r+

@bors

This comment has been minimized.

Copy link
Contributor

commented Sep 29, 2019

📌 Commit c861e24 has been approved by Centril

@rust-highfive rust-highfive assigned Centril and unassigned zackmdavis 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.
bors added a commit that referenced this pull request Sep 29, 2019
Rollup of 7 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)
 - #64896 (Remove legacy grammar)
 - #64898 (fixed typo)

Failed merges:

r? @ghost
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
4 checks passed
4 checks passed
pr Build #20190928.58 succeeded
Details
pr (Linux mingw-check) Linux mingw-check succeeded
Details
pr (Linux x86_64-gnu-llvm-6.0) Linux x86_64-gnu-llvm-6.0 succeeded
Details
pr (LinuxTools) LinuxTools succeeded
Details
@Manishearth

This comment has been minimized.

Copy link
Member

commented Oct 1, 2019

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

This comment has been minimized.

Copy link
Member

commented Oct 1, 2019

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

This comment has been minimized.

Copy link
Contributor Author

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
Projects
None yet
6 participants
You can’t perform that action at this time.