]> git.lizzy.rs Git - rust.git/commitdiff
Ignore trait implementations with negative polarity when suggesting trait implementat...
authorThePuzzlemaker <tpzker@thepuzzlemaker.info>
Tue, 1 Dec 2020 18:57:19 +0000 (12:57 -0600)
committerThePuzzlemaker <tpzker@thepuzzlemaker.info>
Tue, 1 Dec 2020 19:30:08 +0000 (13:30 -0600)
compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs

index fe4127fd4d8b94baada65ad2195083c590bc4868..9feba7bfc492f5523653a0a1f4ba1f44dda1dc87 100644 (file)
@@ -1310,10 +1310,20 @@ fn find_similar_impl_candidates(
                             return None;
                         }
                     }
+                    if self.tcx.impl_polarity(def_id) == ty::ImplPolarity::Negative {
+                        return None;
+                    }
                     Some(imp)
                 })
                 .collect(),
-            None => all_impls.map(|def_id| self.tcx.impl_trait_ref(def_id).unwrap()).collect(),
+            None => all_impls
+                .filter_map(|def_id| {
+                    if self.tcx.impl_polarity(def_id) == ty::ImplPolarity::Negative {
+                        return None;
+                    }
+                    self.tcx.impl_trait_ref(def_id)
+                })
+                .collect(),
         }
     }