From 26da66d73f2bf5eb23f52d6817e98df806a61bb0 Mon Sep 17 00:00:00 2001 From: Folkert Date: Fri, 13 Aug 2021 15:41:32 +0200 Subject: [PATCH] remove from_mutmap --- compiler/types/src/subs.rs | 10 ++++++++++ compiler/unify/src/unify.rs | 20 ++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/compiler/types/src/subs.rs b/compiler/types/src/subs.rs index 174d4c69cf..f6c3ca682b 100644 --- a/compiler/types/src/subs.rs +++ b/compiler/types/src/subs.rs @@ -1498,6 +1498,16 @@ impl UnionTags { ) } + pub fn tag_without_arguments(subs: &mut Subs, tag_name: TagName) -> Self { + subs.tag_names.push(tag_name); + + Self { + length: 1, + tag_names_start: (subs.tag_names.len() - 1) as u32, + variables_start: 0, + } + } + pub fn insert_slices_into_subs(subs: &mut Subs, input: I) -> Self where I: IntoIterator, diff --git a/compiler/unify/src/unify.rs b/compiler/unify/src/unify.rs index a0bc958e93..fbfe69b6d3 100644 --- a/compiler/unify/src/unify.rs +++ b/compiler/unify/src/unify.rs @@ -1285,15 +1285,8 @@ fn unify_function_or_tag_union_and_func( ) -> Outcome { let tag_name = subs[*tag_name_index].clone(); - let mut new_tags = MutMap::with_capacity_and_hasher(1, default_hasher()); - - new_tags.insert( - tag_name, - subs.get_subs_slice(*function_arguments.as_subs_slice()) - .to_owned(), - ); - - let content = Content::Structure(from_mutmap(subs, new_tags, tag_ext)); + let union_tags = UnionTags::insert_slices_into_subs(subs, [(tag_name, function_arguments)]); + let content = Content::Structure(FlatType::TagUnion(union_tags, tag_ext)); let new_tag_union_var = fresh(subs, pool, ctx, content); @@ -1304,12 +1297,11 @@ fn unify_function_or_tag_union_and_func( }; { + let tag_name = TagName::Closure(tag_symbol); + let union_tags = UnionTags::tag_without_arguments(subs, tag_name); + let lambda_set_ext = subs.fresh_unnamed_flex_var(); - - let mut closure_tags = MutMap::with_capacity_and_hasher(1, default_hasher()); - closure_tags.insert(TagName::Closure(tag_symbol), vec![]); - - let lambda_set_content = Structure(from_mutmap(subs, closure_tags, lambda_set_ext)); + let lambda_set_content = Structure(FlatType::TagUnion(union_tags, lambda_set_ext)); let tag_lambda_set = register( subs,