about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer <github35764891676564198441@oli-obk.de>2018-10-08 08:21:59 +0200
committerGitHub <noreply@github.com>2018-10-08 08:21:59 +0200
commitce2da2c04f90b9e267bd62bba6b601a9ffef4b0a (patch)
tree1e1efdc982f9ef2e1b1121f92227c800c4d77d86
parent41e94dd072e8a0dbf060740e6baaf3dcfb07fbc9 (diff)
parent9bd4e5469e1ecb7d98602ba1d805872faa8bf2c9 (diff)
downloadrust-ce2da2c04f90b9e267bd62bba6b601a9ffef4b0a.tar.gz
rust-ce2da2c04f90b9e267bd62bba6b601a9ffef4b0a.zip
Merge pull request #3283 from etaoins/dont-suggest-cloned-for-map-box-deref
Don't suggest cloned() for map Box deref
-rw-r--r--clippy_lints/src/map_clone.rs2
-rw-r--r--tests/ui/map_clone.rs1
2 files changed, 2 insertions, 1 deletions
diff --git a/clippy_lints/src/map_clone.rs b/clippy_lints/src/map_clone.rs
index c2bfcf18280..b2c08e6ae8c 100644
--- a/clippy_lints/src/map_clone.rs
+++ b/clippy_lints/src/map_clone.rs
@@ -79,7 +79,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
                         lint(cx, e.span, args[0].span, name, closure_expr);
                     },
                     hir::PatKind::Binding(hir::BindingAnnotation::Unannotated, _, name, None) => match closure_expr.node {
-                        hir::ExprKind::Unary(hir::UnOp::UnDeref, ref inner) => lint(cx, e.span, args[0].span, name, inner),
+                        hir::ExprKind::Unary(hir::UnOp::UnDeref, ref inner) if !cx.tables.expr_ty(inner).is_box() => lint(cx, e.span, args[0].span, name, inner),
                         hir::ExprKind::MethodCall(ref method, _, ref obj) => if method.ident.as_str() == "clone" && match_trait_method(cx, closure_expr, &paths::CLONE_TRAIT) {
                             lint(cx, e.span, args[0].span, name, &obj[0]);
                         }
diff --git a/tests/ui/map_clone.rs b/tests/ui/map_clone.rs
index 8a410737f83..90611023f75 100644
--- a/tests/ui/map_clone.rs
+++ b/tests/ui/map_clone.rs
@@ -16,4 +16,5 @@ fn main() {
     let _: Vec<i8> = vec![5_i8; 6].iter().map(|x| *x).collect();
     let _: Vec<String> = vec![String::new()].iter().map(|x| x.clone()).collect();
     let _: Vec<u32> = vec![42, 43].iter().map(|&x| x).collect();
+    let _: Option<u64> = Some(Box::new(16)).map(|b| *b);
 }