Skip to content

Commit

Permalink
Auto merge of #4445 - phansch:fix_unused_unit_sugg, r=flip1995
Browse files Browse the repository at this point in the history
Fix unused_unit false positive

changelog: Fix `unused_unit` false positive

For some reason the `expr` of `stmt.node` didn't contain the expansion information, but the `stmt.span` does.

Fixes #4076
  • Loading branch information
bors committed Aug 26, 2019
2 parents f760088 + 957dedb commit fea888f
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 8 deletions.
2 changes: 1 addition & 1 deletion clippy_lints/src/returns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ impl EarlyLintPass for Return {
if_chain! {
if let Some(ref stmt) = block.stmts.last();
if let ast::StmtKind::Expr(ref expr) = stmt.node;
if is_unit_expr(expr) && !expr.span.from_expansion();
if is_unit_expr(expr) && !stmt.span.from_expansion();
then {
let sp = expr.span;
span_lint_and_then(cx, UNUSED_UNIT, sp, "unneeded unit expression", |db| {
Expand Down
14 changes: 14 additions & 0 deletions tests/ui/unused_unit.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#![rustfmt::skip]

#![deny(clippy::unused_unit)]
#![allow(dead_code)]

struct Unitter;
impl Unitter {
Expand Down Expand Up @@ -42,3 +43,16 @@ fn main() {
}
return;
}

// https://github.com/rust-lang/rust-clippy/issues/4076
fn foo() {
macro_rules! foo {
(recv($r:expr) -> $res:pat => $body:expr) => {
$body
}
}

foo! {
recv(rx) -> _x => ()
}
}
14 changes: 14 additions & 0 deletions tests/ui/unused_unit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#![rustfmt::skip]

#![deny(clippy::unused_unit)]
#![allow(dead_code)]

struct Unitter;
impl Unitter {
Expand Down Expand Up @@ -43,3 +44,16 @@ fn main() {
}
return();
}

// https://github.com/rust-lang/rust-clippy/issues/4076
fn foo() {
macro_rules! foo {
(recv($r:expr) -> $res:pat => $body:expr) => {
$body
}
}

foo! {
recv(rx) -> _x => ()
}
}
14 changes: 7 additions & 7 deletions tests/ui/unused_unit.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: unneeded unit return type
--> $DIR/unused_unit.rs:18:59
--> $DIR/unused_unit.rs:19:59
|
LL | pub fn get_unit<F: Fn() -> (), G>(&self, f: F, _g: G) ->
| ___________________________________________________________^
Expand All @@ -13,37 +13,37 @@ LL | #![deny(clippy::unused_unit)]
| ^^^^^^^^^^^^^^^^^^^

error: unneeded unit return type
--> $DIR/unused_unit.rs:28:19
--> $DIR/unused_unit.rs:29:19
|
LL | fn into(self) -> () {
| ^^^^^ help: remove the `-> ()`

error: unneeded unit expression
--> $DIR/unused_unit.rs:29:9
--> $DIR/unused_unit.rs:30:9
|
LL | ()
| ^^ help: remove the final `()`

error: unneeded unit return type
--> $DIR/unused_unit.rs:33:18
--> $DIR/unused_unit.rs:34:18
|
LL | fn return_unit() -> () { () }
| ^^^^^ help: remove the `-> ()`

error: unneeded unit expression
--> $DIR/unused_unit.rs:33:26
--> $DIR/unused_unit.rs:34:26
|
LL | fn return_unit() -> () { () }
| ^^ help: remove the final `()`

error: unneeded `()`
--> $DIR/unused_unit.rs:42:14
--> $DIR/unused_unit.rs:43:14
|
LL | break();
| ^^ help: remove the `()`

error: unneeded `()`
--> $DIR/unused_unit.rs:44:11
--> $DIR/unused_unit.rs:45:11
|
LL | return();
| ^^ help: remove the `()`
Expand Down

0 comments on commit fea888f

Please sign in to comment.