Skip to content

Commit

Permalink
Use each_binding_or_first in capture_local_usage
Browse files Browse the repository at this point in the history
  • Loading branch information
Jarcho committed Aug 16, 2021
1 parent 10c0460 commit f0444d7
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions clippy_utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -733,16 +733,18 @@ impl std::ops::BitOrAssign for CaptureKind {
pub fn capture_local_usage(cx: &LateContext<'tcx>, e: &Expr<'_>) -> CaptureKind {
fn pat_capture_kind(cx: &LateContext<'_>, pat: &Pat<'_>) -> CaptureKind {
let mut capture = CaptureKind::Ref(Mutability::Not);
pat.each_binding(|_, id, span, _| {
match cx.typeck_results().extract_binding_mode(cx.sess(), id, span).unwrap() {
BindingMode::BindByValue(_) if !is_copy(cx, cx.typeck_results().node_type(id)) => {
capture = CaptureKind::Value;
},
BindingMode::BindByReference(Mutability::Mut) if capture != CaptureKind::Value => {
capture = CaptureKind::Ref(Mutability::Mut);
},
_ => (),
}
pat.each_binding_or_first(&mut |_, id, span, _| match cx
.typeck_results()
.extract_binding_mode(cx.sess(), id, span)
.unwrap()
{
BindingMode::BindByValue(_) if !is_copy(cx, cx.typeck_results().node_type(id)) => {
capture = CaptureKind::Value;
},
BindingMode::BindByReference(Mutability::Mut) if capture != CaptureKind::Value => {
capture = CaptureKind::Ref(Mutability::Mut);
},
_ => (),
});
capture
}
Expand Down

0 comments on commit f0444d7

Please sign in to comment.