Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Jan 11, 2020
1 parent 43ac941 commit 1d7d4e9
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 15 deletions.
22 changes: 12 additions & 10 deletions clippy_lints/src/matches.rs
Original file line number Diff line number Diff line change
Expand Up @@ -713,16 +713,18 @@ fn all_ranges<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, arms: &'tcx [Arm<'_>]) -> Ve
} = *arm
{
if let PatKind::Range(ref lhs, ref rhs, ref range_end) = pat.kind {
let lhs = constant(cx, cx.tables, lhs)?.0;
let rhs = constant(cx, cx.tables, rhs)?.0;
let rhs = match *range_end {
RangeEnd::Included => Bound::Included(rhs),
RangeEnd::Excluded => Bound::Excluded(rhs),
};
return Some(SpannedRange {
span: pat.span,
node: (lhs, rhs),
});
if let (Some(l), Some(r)) = (lhs, rhs) {
let lhs = constant(cx, cx.tables, l)?.0;
let rhs = constant(cx, cx.tables, r)?.0;
let rhs = match *range_end {
RangeEnd::Included => Bound::Included(rhs),
RangeEnd::Excluded => Bound::Excluded(rhs),
};
return Some(SpannedRange {
span: pat.span,
node: (lhs, rhs),
});
}
}

if let PatKind::Lit(ref value) = pat.kind {
Expand Down
8 changes: 6 additions & 2 deletions clippy_lints/src/utils/author.rs
Original file line number Diff line number Diff line change
Expand Up @@ -617,9 +617,13 @@ impl<'tcx> Visitor<'tcx> for PrintVisitor {
start_pat, end_pat, end_kind, current
);
self.current = start_pat;
self.visit_expr(start);
if let Some(expr) = start {
self.visit_expr(expr);
}
self.current = end_pat;
self.visit_expr(end);
if let Some(expr) = end {
self.visit_expr(expr);
}
},
PatKind::Slice(ref start, ref middle, ref end) => {
let start_pat = self.next("start");
Expand Down
5 changes: 4 additions & 1 deletion clippy_lints/src/utils/hir_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,10 @@ impl<'a, 'tcx> SpanlessEq<'a, 'tcx> {
ls == rs && over(l, r, |l, r| self.eq_pat(l, r))
},
(&PatKind::Range(ref ls, ref le, ref li), &PatKind::Range(ref rs, ref re, ref ri)) => {
self.eq_expr(ls, rs) && self.eq_expr(le, re) && (*li == *ri)
if let (Some(ls), Some(rs), Some(le), Some(re)) = (ls, rs, le, re) {
return self.eq_expr(ls, rs) && self.eq_expr(le, re) && (*li == *ri);
}
false
},
(&PatKind::Ref(ref le, ref lm), &PatKind::Ref(ref re, ref rm)) => lm == rm && self.eq_pat(le, re),
(&PatKind::Slice(ref ls, ref li, ref le), &PatKind::Slice(ref rs, ref ri, ref re)) => {
Expand Down
8 changes: 6 additions & 2 deletions clippy_lints/src/utils/inspector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -483,8 +483,12 @@ fn print_pat(cx: &LateContext<'_, '_>, pat: &hir::Pat<'_>, indent: usize) {
},
hir::PatKind::Range(ref l, ref r, ref range_end) => {
println!("{}Range", ind);
print_expr(cx, l, indent + 1);
print_expr(cx, r, indent + 1);
if let Some(expr) = l {
print_expr(cx, expr, indent + 1);
}
if let Some(expr) = r {
print_expr(cx, expr, indent + 1);
}
match *range_end {
hir::RangeEnd::Included => println!("{} end included", ind),
hir::RangeEnd::Excluded => println!("{} end excluded", ind),
Expand Down

0 comments on commit 1d7d4e9

Please sign in to comment.