Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/lib.rs')
| -rw-r--r-- | crates/hir-ty/src/lib.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index 5888a4f403..61055583fc 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -356,7 +356,7 @@ pub struct CallableSig { has_interner!(CallableSig); -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Copy, Clone, Eq)] pub enum FnAbi { Aapcs, AapcsUnwind, @@ -398,6 +398,21 @@ pub enum FnAbi { Unknown, } +impl PartialEq for FnAbi { + fn eq(&self, _other: &Self) -> bool { + // FIXME: Proper equality breaks `coercion::two_closures_lub` test + true + } +} + +impl Hash for FnAbi { + fn hash<H: std::hash::Hasher>(&self, state: &mut H) { + // Required because of the FIXME above and due to us implementing `Eq`, without this + // we would break the `Hash` + `Eq` contract + core::mem::discriminant(&Self::Unknown).hash(state); + } +} + impl FnAbi { pub fn from_str(s: &str) -> FnAbi { match s { |