mirror of
https://github.com/roc-lang/roc.git
synced 2025-07-23 06:25:10 +00:00
Update ability bindings
This commit is contained in:
parent
0da72df5e9
commit
3f5a86ded3
1 changed files with 10 additions and 4 deletions
|
@ -2750,17 +2750,23 @@ fn type_to_variable<'a>(
|
|||
for (Loc { value: var, region }, abilities) in bind_to_abilities {
|
||||
match *subs.get_content_unchecked(var) {
|
||||
Content::RigidVar(a) => {
|
||||
// TODO(multi-abilities)
|
||||
subs.set_content(var, Content::RigidAbleVar(a, abilities[0]));
|
||||
// TODO(multi-abilities): check run cache
|
||||
let abilities_slice =
|
||||
SubsSlice::extend_new(&mut subs.symbol_names, abilities.sorted_iter().copied());
|
||||
subs.set_content(var, Content::RigidAbleVar(a, abilities_slice));
|
||||
}
|
||||
// TODO(multi-abilities)
|
||||
Content::RigidAbleVar(_, ab) if ab == abilities[0] => {
|
||||
Content::RigidAbleVar(_, abs)
|
||||
if (subs.get_subs_slice(abs).iter()).eq(abilities.sorted_iter()) =>
|
||||
{
|
||||
// pass, already bound
|
||||
}
|
||||
_ => {
|
||||
// TODO(multi-abilities)
|
||||
let abilities_slice =
|
||||
SubsSlice::extend_new(&mut subs.symbol_names, abilities.sorted_iter().copied());
|
||||
let flex_ability = subs.fresh(Descriptor {
|
||||
content: Content::FlexAbleVar(None, abilities[0]),
|
||||
content: Content::FlexAbleVar(None, abilities_slice),
|
||||
rank,
|
||||
mark: Mark::NONE,
|
||||
copy: OptVariable::NONE,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue