rust-lang/rust-clippy

YEET!

matthiaskrgr opened this issue · 2 comments

Summary

.

Lint Name

needless_return

Reproducer

I tried this code:

#![feature(yeet_expr)]

fn always_yeet() -> Result<i32, String> {
    do yeet "hello";
}

fn main() {
    assert_eq!(always_yeet(), Err("hello".to_string()));
}

Interestingly, it seems like do yeet is read as return statement (I have no idea about the desugaring here tbh) and removing it causes a type mismatch:

    Checking fff v0.1.0 (/tmp/fff)
warning: failed to automatically apply fixes suggested by rustc to crate `fff`

after fixes were automatically applied the compiler reported errors within these files:

  * src/main.rs

This likely indicates a bug in either rustc or cargo itself,
and we would appreciate a bug report! You're likely to see
a number of compiler warnings after this message which cargo
attempted to fix but failed. If you could open an issue at
https://github.com/rust-lang/rust/issues
quoting the full output of this command we'd be very appreciative!
Note that you may be able to make some more progress in the near-term
fixing code with the `--broken-code` flag

The following errors were reported:
error[E0308]: mismatched types
 --> src/main.rs:4:5
  |
3 | fn always_yeet() -> Result<i32, String> {
  |                     ------------------- expected `std::result::Result<i32, std::string::String>` because of return type
4 |     "hello"
  |     ^^^^^^^ expected enum `std::result::Result`, found `&str`
  |
  = note:   expected enum `std::result::Result<i32, std::string::String>`
          found reference `&'static str`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
Original diagnostics will follow.

warning: unneeded `return` statement
 --> src/main.rs:4:5
  |
4 |     do yeet "hello";
  |     ^^^^^^^^^^^^^^^
  |
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
  = note: `#[warn(clippy::needless_return)]` on by default
  = help: remove `return`

Version

rustc 1.67.0-nightly (b3bc6bf31 2022-11-24)
binary: rustc
commit-hash: b3bc6bf31265ac10946a0832092dbcedf9b26805
commit-date: 2022-11-24
host: x86_64-unknown-linux-gnu
release: 1.67.0-nightly
LLVM version: 15.0.4

Additional Labels

No response

Sorry if you are still working on this, but I think I have a fix for this ready, and I would like to takeover if you aren't against :)

@rustbot claim