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

False needless_return trigger + invalid suggestion #13486

Closed
zeenix opened this issue Oct 1, 2024 · 1 comment · Fixed by #13464
Closed

False needless_return trigger + invalid suggestion #13486

zeenix opened this issue Oct 1, 2024 · 1 comment · Fixed by #13464
Labels
C-bug Category: Clippy is not doing the correct thing I-false-positive Issue: The lint was triggered on code it shouldn't have

Comments

@zeenix
Copy link

zeenix commented Oct 1, 2024

Summary

With the latest nightly clippy, I'm getting a false positive and to make things worse, the recommendation isn't valid Rust code:

error: unneeded `return` statement
   --> src/bin/busd.rs:112:7
    |
112 |     Ok(())
    |       ^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
    = note: `-D clippy::needless-return` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::needless_return)]`
help: remove `return`
    |
112 ~     Okif let Err(e) = bus.cleanup().await {
113 +         error!("Failed to clean up: {}", e);
114 +     }
115 + 
116 +     Ok(())
    |

Lint Name

needless_return

Reproducer

/~https://github.com/dbus2/busd/blob/3a8ed5785f1c17e4adf7892155779b7c24444496/src/bin/busd.rs#L108

Version

rustc 1.81.0 (eeb90cda1 2024-09-04)
binary: rustc
commit-hash: eeb90cda1969383f56a2637cbd3037bdf598841c
commit-date: 2024-09-04
host: x86_64-unknown-linux-gnu
release: 1.81.0
LLVM version: 18.1.7

Additional Labels

No response

@zeenix zeenix added C-bug Category: Clippy is not doing the correct thing I-false-positive Issue: The lint was triggered on code it shouldn't have labels Oct 1, 2024
@y21
Copy link
Member

y21 commented Oct 1, 2024

Most likely a duplicate of #13458 (which will be fixed by #13464)

@bors bors closed this as completed in 8e60f14 Oct 10, 2024
flip1995 pushed a commit to flip1995/rust-clippy that referenced this issue Oct 18, 2024
Don't warn on proc macro generated code in `needless_return`

Fixes rust-lang#13458
Fixes rust-lang#13457
Fixes rust-lang#13467
Fixes rust-lang#13479
Fixes rust-lang#13481
Fixes rust-lang#13526
Fixes rust-lang#13486

The fix is unfortunately a little more convoluted than just simply adding a `is_from_proc_macro`. That check *does*  fix the issue, however it also introduces a bunch of false negatives in the tests, specifically when the returned expression is in a different syntax context, e.g. `return format!(..)`.

The proc macro check builds up a start and end pattern based on the HIR nodes and compares it to a snippet of the span, however that would currently fail for `return format!(..)` because we would have the patterns `("return", <something inside of the format macro>)`, which doesn't compare equal. So we now return an empty string pattern for when it's in a different syntax context.

"Hide whitespace" helps a bit for reviewing the proc macro detection change

changelog: none
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: Clippy is not doing the correct thing I-false-positive Issue: The lint was triggered on code it shouldn't have
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants