Fix FP in unnecessary_lazy_evaluations
This commit is contained in:
parent
c1664c50b2
commit
e90b977a08
@ -116,20 +116,27 @@ pub struct ParamBindingIdCollector {
|
|||||||
}
|
}
|
||||||
impl<'tcx> ParamBindingIdCollector {
|
impl<'tcx> ParamBindingIdCollector {
|
||||||
fn collect_binding_hir_ids(body: &'tcx hir::Body<'tcx>) -> Vec<hir::HirId> {
|
fn collect_binding_hir_ids(body: &'tcx hir::Body<'tcx>) -> Vec<hir::HirId> {
|
||||||
|
let mut hir_ids: Vec<hir::HirId> = Vec::new();
|
||||||
|
for param in body.params.iter() {
|
||||||
let mut finder = ParamBindingIdCollector {
|
let mut finder = ParamBindingIdCollector {
|
||||||
binding_hir_ids: Vec::new(),
|
binding_hir_ids: Vec::new(),
|
||||||
};
|
};
|
||||||
finder.visit_body(body);
|
finder.visit_param(param);
|
||||||
finder.binding_hir_ids
|
for hir_id in &finder.binding_hir_ids {
|
||||||
|
hir_ids.push(*hir_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hir_ids
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl<'tcx> intravisit::Visitor<'tcx> for ParamBindingIdCollector {
|
impl<'tcx> intravisit::Visitor<'tcx> for ParamBindingIdCollector {
|
||||||
type Map = Map<'tcx>;
|
type Map = Map<'tcx>;
|
||||||
|
|
||||||
fn visit_param(&mut self, param: &'tcx hir::Param<'tcx>) {
|
fn visit_pat(&mut self, pat: &'tcx hir::Pat<'tcx>) {
|
||||||
if let hir::PatKind::Binding(_, hir_id, ..) = param.pat.kind {
|
if let hir::PatKind::Binding(_, hir_id, ..) = pat.kind {
|
||||||
self.binding_hir_ids.push(hir_id);
|
self.binding_hir_ids.push(hir_id);
|
||||||
}
|
}
|
||||||
|
intravisit::walk_pat(self, pat);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn nested_visit_map(&mut self) -> intravisit::NestedVisitorMap<Self::Map> {
|
fn nested_visit_map(&mut self) -> intravisit::NestedVisitorMap<Self::Map> {
|
||||||
|
@ -15,4 +15,8 @@ fn main() {
|
|||||||
}
|
}
|
||||||
let _ = Ok(1).unwrap_or_else(|e::E| 2);
|
let _ = Ok(1).unwrap_or_else(|e::E| 2);
|
||||||
let _ = Ok(1).unwrap_or_else(|SomeStruct { .. }| 2);
|
let _ = Ok(1).unwrap_or_else(|SomeStruct { .. }| 2);
|
||||||
|
|
||||||
|
// Fix #6343
|
||||||
|
let arr = [(Some(1),)];
|
||||||
|
Some(&0).and_then(|&i| arr[i].0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user