From 0da72df5e92d43d3e1c12097cee350847b5311a9 Mon Sep 17 00:00:00 2001 From: Ayaz Hafiz Date: Fri, 14 Oct 2022 14:00:01 -0500 Subject: [PATCH] Add ability slice to eq obligation checker --- crates/compiler/solve/src/ability.rs | 1 + crates/compiler/types/src/subs.rs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/crates/compiler/solve/src/ability.rs b/crates/compiler/solve/src/ability.rs index 8aa9b3a780..95e39a04f8 100644 --- a/crates/compiler/solve/src/ability.rs +++ b/crates/compiler/solve/src/ability.rs @@ -1030,6 +1030,7 @@ impl DerivableVisitor for DeriveHash { struct DeriveEq; impl DerivableVisitor for DeriveEq { const ABILITY: Symbol = Symbol::BOOL_EQ; + const ABILITY_SLICE: SubsSlice = Subs::AB_EQ; #[inline(always)] fn is_derivable_builtin_opaque(symbol: Symbol) -> bool { diff --git a/crates/compiler/types/src/subs.rs b/crates/compiler/types/src/subs.rs index a72d27c4eb..aacc77273c 100644 --- a/crates/compiler/types/src/subs.rs +++ b/crates/compiler/types/src/subs.rs @@ -1685,6 +1685,8 @@ impl Subs { pub const AB_HASHER: SubsSlice = SubsSlice::new(2, 1); #[rustfmt::skip] pub const AB_HASH: SubsSlice = SubsSlice::new(3, 1); + #[rustfmt::skip] + pub const AB_EQ: SubsSlice = SubsSlice::new(4, 1); pub fn new() -> Self { Self::with_capacity(0) @@ -1708,6 +1710,7 @@ impl Subs { symbol_names.push(Symbol::DECODE_DECODING); symbol_names.push(Symbol::HASH_HASHER); symbol_names.push(Symbol::HASH_HASH_ABILITY); + symbol_names.push(Symbol::BOOL_EQ); let mut subs = Subs { utable: UnificationTable::default(),