Get DeriveBuiltin from symbol

This commit is contained in:
Ayaz Hafiz 2022-08-01 16:44:27 -05:00
parent 44984d289c
commit 61d34a4225
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
2 changed files with 19 additions and 4 deletions

View file

@ -12,7 +12,7 @@ use roc_debug_flags::dbg_do;
#[cfg(debug_assertions)]
use roc_debug_flags::ROC_TRACE_COMPACTION;
use roc_derive::SharedDerivedModule;
use roc_derive_key::{DeriveBuiltin, DeriveError, DeriveKey};
use roc_derive_key::{DeriveError, DeriveKey};
use roc_error_macros::{internal_error, todo_abilities};
use roc_module::symbol::{ModuleId, Symbol};
use roc_types::{
@ -655,9 +655,12 @@ fn make_specialization_decision<P: Phase>(
}
}
Structure(_) | Alias(_, _, _, _) => {
// This is a structural type, find the name of the derived ability function it
// should use.
match roc_derive_key::Derived::builtin(DeriveBuiltin::ToEncoder, subs, var) {
let builtin = ability_member
.try_into()
.expect("can only derive builtin abilities");
// 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))