diff options
| author | bors <bors@rust-lang.org> | 2020-08-26 12:01:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-08-26 12:01:32 +0000 |
| commit | 894581b872ef8f87074815454f25a262d4e699f4 (patch) | |
| tree | 4aaa438c190875fbfc971b87cb62b7920f6373c7 | |
| parent | 9ef44799bf096efbda9a7f4e5806d6bc11483e28 (diff) | |
| parent | e8d33d73dc3f9d0daf9b3affe65a2431f5a3e13a (diff) | |
| download | rust-894581b872ef8f87074815454f25a262d4e699f4.tar.gz rust-894581b872ef8f87074815454f25a262d4e699f4.zip | |
Auto merge of #5946 - mikerite:fix-5729, r=flip1995
Fix `let_and_return` bad suggestion Add a cast to the suggestion when the return expression has adjustments. These adjustments are lost when the suggestion is applied. This is similar to the problem in issue #4437. Closes #5729 changelog: Fix `let_and_return` bad suggestion
| -rw-r--r-- | clippy_lints/src/returns.rs | 5 | ||||
| -rw-r--r-- | tests/ui/let_and_return.rs | 21 | ||||
| -rw-r--r-- | tests/ui/let_and_return.stderr | 16 |
3 files changed, 40 insertions, 2 deletions
diff --git a/clippy_lints/src/returns.rs b/clippy_lints/src/returns.rs index 3c5541e64b4..a6e4252a0c8 100644 --- a/clippy_lints/src/returns.rs +++ b/clippy_lints/src/returns.rs @@ -99,7 +99,10 @@ impl<'tcx> LateLintPass<'tcx> for Return { |err| { err.span_label(local.span, "unnecessary `let` binding"); - if let Some(snippet) = snippet_opt(cx, initexpr.span) { + if let Some(mut snippet) = snippet_opt(cx, initexpr.span) { + if !cx.typeck_results().expr_adjustments(&retexpr).is_empty() { + snippet.push_str(" as _"); + } err.multipart_suggestion( "return the expression directly", vec