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

rustc 1.83.0-nightly clippy wrongly report needless_return #13479

Closed
yipu3 opened this issue Sep 30, 2024 · 1 comment · Fixed by #13464
Closed

rustc 1.83.0-nightly clippy wrongly report needless_return #13479

yipu3 opened this issue Sep 30, 2024 · 1 comment · Fixed by #13464
Labels
C-bug Category: Clippy is not doing the correct thing

Comments

@yipu3
Copy link

yipu3 commented Sep 30, 2024

Summary

When using rustc 1.83.0-nightly clippy wrongly report needless_return. After changed to the stable version it became normal.

Reproducer

I tried this code:

use xxx::run;
use eyre::Result;

#[tokio::main]
async fn main() -> Result<()> {
    tracing_subscriber::fmt::init();
    run().await;
}

I expected to see this happen: Do not report needless_return because I even haven't used the return keywords.

Instead, this happened: It reported needless_return and suggested me to change run().await; to run().run().await;. There is definately something wrong here.

(Cannot provide the whole code and output because is a private project)

Version

rustc 1.83.0-nightly (7608018cb 2024-09-29)
binary: rustc
commit-hash: 7608018cb...
commit-date: 2024-09-29
host: x86_64-unknown-linux-gnu
release: 1.83.0-nightly
LLVM version: 19.1.0

Additional Labels

No response

@yipu3 yipu3 added the C-bug Category: Clippy is not doing the correct thing label Sep 30, 2024
@y21
Copy link
Member

y21 commented Sep 30, 2024

Duplicate of #13458, 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
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants