about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix Kohlgrüber <felix.kohlgrueber@gmail.com>2018-12-06 11:07:10 +0100
committerFelix Kohlgrüber <felix.kohlgrueber@gmail.com>2018-12-06 11:07:10 +0100
commita8a0b236b5768ab30a0439872368c1dc2e199860 (patch)
tree6e7183665b3f8bf395031cd0052baa2160ce68b8
parentf93591294d60f705fb70578cfc32346efe1e03d8 (diff)
downloadrust-a8a0b236b5768ab30a0439872368c1dc2e199860.tar.gz
rust-a8a0b236b5768ab30a0439872368c1dc2e199860.zip
fix #3482 and add ui test for it
-rw-r--r--clippy_lints/src/block_in_if_condition.rs2
-rw-r--r--tests/ui/block_in_if_condition.rs8
2 files changed, 9 insertions, 1 deletions
diff --git a/clippy_lints/src/block_in_if_condition.rs b/clippy_lints/src/block_in_if_condition.rs
index 5597b856a8c..f90e7669dd0 100644
--- a/clippy_lints/src/block_in_if_condition.rs
+++ b/clippy_lints/src/block_in_if_condition.rs
@@ -70,7 +70,7 @@ impl<'a, 'tcx: 'a> Visitor<'tcx> for ExVisitor<'a, 'tcx> {
         if let ExprKind::Closure(_, _, eid, _, _) = expr.node {
             let body = self.cx.tcx.hir.body(eid);
             let ex = &body.value;
-            if matches!(ex.node, ExprKind::Block(_, _)) {
+            if matches!(ex.node, ExprKind::Block(_, _)) && !in_macro(body.value.span) {
                 self.found_block = Some(ex);
                 return;
             }
diff --git a/tests/ui/block_in_if_condition.rs b/tests/ui/block_in_if_condition.rs
index bb87315bcc4..94611811841 100644
--- a/tests/ui/block_in_if_condition.rs
+++ b/tests/ui/block_in_if_condition.rs
@@ -98,3 +98,11 @@ fn condition_is_unsafe_block() {
 
 fn main() {
 }
+
+fn macro_in_closure() {
+    let option = Some(true);
+
+    if option.unwrap_or_else(|| unimplemented!()) {
+        unimplemented!()
+    }
+}