about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Wright <mikerite@lavabit.com>2019-08-18 13:14:47 +0200
committerMichael Wright <mikerite@lavabit.com>2019-08-18 13:14:47 +0200
commitb313d25350bf8df41e65485a65b4536fe267bec0 (patch)
treebd10dc3dbb27538ed4434491f320430f8e52af32
parent533bdfbdbc52c87d03959a4d58be6301f157da6e (diff)
downloadrust-b313d25350bf8df41e65485a65b4536fe267bec0.tar.gz
rust-b313d25350bf8df41e65485a65b4536fe267bec0.zip
Fix breakage due to rust-lang/rust#61708
-rw-r--r--clippy_lints/src/copies.rs8
-rw-r--r--clippy_lints/src/utils/author.rs6
-rw-r--r--clippy_lints/src/utils/inspector.rs6
-rw-r--r--clippy_lints/src/utils/mod.rs2
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