diff options
| author | Michael Wright <mikerite@lavabit.com> | 2019-08-18 13:14:47 +0200 |
|---|---|---|
| committer | Michael Wright <mikerite@lavabit.com> | 2019-08-18 13:14:47 +0200 |
| commit | b313d25350bf8df41e65485a65b4536fe267bec0 (patch) | |
| tree | bd10dc3dbb27538ed4434491f320430f8e52af32 | |
| parent | 533bdfbdbc52c87d03959a4d58be6301f157da6e (diff) | |
| download | rust-b313d25350bf8df41e65485a65b4536fe267bec0.tar.gz rust-b313d25350bf8df41e65485a65b4536fe267bec0.zip | |
Fix breakage due to rust-lang/rust#61708
| -rw-r--r-- | clippy_lints/src/copies.rs | 8 | ||||
| -rw-r--r-- | clippy_lints/src/utils/author.rs | 6 | ||||
| -rw-r--r-- | clippy_lints/src/utils/inspector.rs | 6 | ||||
| -rw-r--r-- | clippy_lints/src/utils/mod.rs | 2 |
4 files changed, 17 insertions, 5 deletions
diff --git a/clippy_lints/src/copies.rs b/clippy_lints/src/copies.rs index 64239bb4dd4..01989625b45 100644 --- a/clippy_lints/src/copies.rs +++ b/clippy_lints/src/copies.rs @@ -298,14 +298,14 @@ fn bindings<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, pat: &Pat) -> FxHashMap<LocalI bindings_impl(cx, as_pat, map); } }, - PatKind::Struct(_, ref fields, _) => { + PatKind::Or(ref fields) | PatKind::Tuple(ref fields, _) => { for pat in fields { - bindings_impl(cx, &pat.pat, map); + bindings_impl(cx, pat, map); } }, - PatKind::Tuple(ref fields, _) => { + PatKind::Struct(_, ref fields, _) => { for pat in fields { - bindings_impl(cx, pat, map); + bindings_impl(cx, &pat.pat, map); } }, PatKind::Slice(ref lhs, ref mid, ref rhs) => { diff --git a/clippy_lints/src/utils/author.rs b/clippy_lints/src/utils/author.rs index 6d9eddac894..4cf52ddac92 100644 --- a/clippy_lints/src/utils/author.rs +++ b/clippy_lints/src/utils/author.rs @@ -549,6 +549,12 @@ impl<'tcx> Visitor<'tcx> for PrintVisitor { println!(" if {}.len() == {};", fields_pat, fields.len()); println!(" // unimplemented: field checks"); }, + PatKind::Or(ref fields) => { + let fields_pat = self.next("fields"); + println!("Or(ref {}) = {};", fields_pat, current); + println!(" if {}.len() == {};", fields_pat, fields.len()); + println!(" // unimplemented: field checks"); + }, PatKind::TupleStruct(ref path, ref fields, skip_pos) => { let path_pat = self.next("path"); let fields_pat = self.next("fields"); diff --git a/clippy_lints/src/utils/inspector.rs b/clippy_lints/src/utils/inspector.rs index 309b5165c69..b48ef7d293b 100644 --- a/clippy_lints/src/utils/inspector.rs +++ b/clippy_lints/src/utils/inspector.rs @@ -410,6 +410,12 @@ fn print_pat(cx: &LateContext<'_, '_>, pat: &hir::Pat, indent: usize) { print_pat(cx, inner, indent + 1); } }, + hir::PatKind::Or(ref fields) => { + println!("{}Or", ind); + for field in fields { + print_pat(cx, field, indent + 1); + } + }, hir::PatKind::Struct(ref path, ref fields, ignore) => { println!("{}Struct", ind); println!( diff --git a/clippy_lints/src/utils/mod.rs b/clippy_lints/src/utils/mod.rs index a25f2504127..020068d4633 100644 --- a/clippy_lints/src/utils/mod.rs +++ b/clippy_lints/src/utils/mod.rs @@ -791,7 +791,7 @@ pub fn is_refutable(cx: &LateContext<'_, '_>, pat: &Pat) -> bool { PatKind::Box(ref pat) | PatKind::Ref(ref pat, _) => is_refutable(cx, pat), PatKind::Lit(..) | PatKind::Range(..) => true, PatKind::Path(ref qpath) => is_enum_variant(cx, qpath, pat.hir_id), - PatKind::Tuple(ref pats, _) => are_refutable(cx, pats.iter().map(|pat| &**pat)), + PatKind::Or(ref pats) | PatKind::Tuple(ref pats, _) => are_refutable(cx, pats.iter().map(|pat| &**pat)), PatKind::Struct(ref qpath, ref fields, _) => { if is_enum_variant(cx, qpath, pat.hir_id) { true |
