Drop members with no actionable specialization decision

This commit is contained in:
Ayaz Hafiz 2022-08-02 16:22:42 -05:00
parent 61d34a4225
commit 0e8eb5f6d0
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58

View file

@ -655,16 +655,16 @@ fn make_specialization_decision<P: Phase>(
}
}
Structure(_) | Alias(_, _, _, _) => {
let builtin = ability_member
.try_into()
.expect("can only derive builtin abilities");
let builtin = match ability_member.try_into() {
Ok(builtin) => builtin,
Err(_) => return SpecializeDecision::Drop,
};
// This is a structural type, find the derived ability function it should use.
match roc_derive_key::Derived::builtin(builtin, subs, var) {
Ok(derived) => match derived {
roc_derive_key::Derived::Immediate(imm) => {
SpecializeDecision::Specialize(Immediate(imm))
// todo!("deal with lambda set extraction from immediates")
}
roc_derive_key::Derived::Key(derive_key) => {
SpecializeDecision::Specialize(Derived(derive_key))