forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#81991 - osa1:issue81839, r=estebank
Fix panic in 'remove semicolon' when types are not local It's not possible to check if removing a semicolon fixes the type error when checking match arms and one or both of the last arm's and the current arm's return types are imported "opaque" types. In these cases we don't generate a "consider removing semicolon" suggestions. Fixes rust-lang#81839 --- I'm not sure how to add a test for this. I think the test would need at least two crates. Do we have any existing tests that do this so that I can take a look?
- Loading branch information
Showing
5 changed files
with
71 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// edition:2018 | ||
|
||
pub struct Test {} | ||
|
||
impl Test { | ||
pub async fn answer_str(&self, _s: &str) -> Test { | ||
Test {} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// aux-build:issue-81839.rs | ||
// edition:2018 | ||
|
||
extern crate issue_81839; | ||
|
||
async fn test(ans: &str, num: i32, cx: &issue_81839::Test) -> u32 { | ||
match num { | ||
1 => { | ||
cx.answer_str("hi"); | ||
} | ||
_ => cx.answer_str("hi"), //~ `match` arms have incompatible types | ||
} | ||
|
||
1 | ||
} | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
error[E0308]: `match` arms have incompatible types | ||
--> $DIR/issue-81839.rs:11:14 | ||
| | ||
LL | / match num { | ||
LL | | 1 => { | ||
LL | | cx.answer_str("hi"); | ||
| | -------------------- | ||
| | | | | ||
| | | help: consider removing this semicolon | ||
| | this is found to be of type `()` | ||
LL | | } | ||
LL | | _ => cx.answer_str("hi"), | ||
| | ^^^^^^^^^^^^^^^^^^^ expected `()`, found opaque type | ||
LL | | } | ||
| |_____- `match` arms have incompatible types | ||
| | ||
::: $DIR/auxiliary/issue-81839.rs:6:49 | ||
| | ||
LL | pub async fn answer_str(&self, _s: &str) -> Test { | ||
| ---- the `Output` of this `async fn`'s found opaque type | ||
| | ||
= note: expected type `()` | ||
found opaque type `impl Future` | ||
|
||
error: aborting due to previous error | ||
|
||
For more information about this error, try `rustc --explain E0308`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters