From 54198d7da12c4e8f8f70a96ba2466ddaa78b7d23 Mon Sep 17 00:00:00 2001 From: Folkert Date: Mon, 2 Aug 2021 23:05:11 +0200 Subject: [PATCH] one more shrinkage --- cli/src/repl/eval.rs | 4 ++-- compiler/mono/src/layout.rs | 2 +- compiler/solve/src/solve.rs | 2 +- compiler/solve/tests/solve_expr.rs | 2 +- compiler/types/src/pretty_print.rs | 6 +++--- compiler/types/src/solved_types.rs | 2 +- compiler/types/src/subs.rs | 4 +++- compiler/unify/src/unify.rs | 12 ++++++------ 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/cli/src/repl/eval.rs b/cli/src/repl/eval.rs index 99f1aa40d0..3f9835e196 100644 --- a/cli/src/repl/eval.rs +++ b/cli/src/repl/eval.rs @@ -173,7 +173,7 @@ fn jit_to_ast_help<'a>( )) } Content::Structure(FlatType::FunctionOrTagUnion(tag_name, _, _)) => Ok( - single_tag_union_to_ast(env, ptr, field_layouts, tag_name.clone(), &[]), + single_tag_union_to_ast(env, ptr, field_layouts, *tag_name.clone(), &[]), ), Content::Structure(FlatType::Func(_, _, _)) => { // a function with a struct as the closure environment @@ -435,7 +435,7 @@ fn ptr_to_ast<'a>( single_tag_union_to_ast(env, ptr, field_layouts, tag_name.clone(), payload_vars) } Content::Structure(FlatType::FunctionOrTagUnion(tag_name, _, _)) => { - single_tag_union_to_ast(env, ptr, field_layouts, tag_name.clone(), &[]) + single_tag_union_to_ast(env, ptr, field_layouts, *tag_name.clone(), &[]) } Content::Structure(FlatType::EmptyRecord) => { struct_to_ast(env, ptr, &[], &RecordFields::with_capacity(0)) diff --git a/compiler/mono/src/layout.rs b/compiler/mono/src/layout.rs index d4d99087f1..42ba8a1038 100644 --- a/compiler/mono/src/layout.rs +++ b/compiler/mono/src/layout.rs @@ -1235,7 +1235,7 @@ fn layout_from_flat_type<'a>( debug_assert!(ext_var_is_empty_tag_union(subs, ext_var)); let mut tags = MutMap::default(); - tags.insert(tag_name, vec![]); + tags.insert(*tag_name, vec![]); Ok(layout_from_tag_union(arena, tags, subs)) } diff --git a/compiler/solve/src/solve.rs b/compiler/solve/src/solve.rs index 139add9f75..a4def825d0 100644 --- a/compiler/solve/src/solve.rs +++ b/compiler/solve/src/solve.rs @@ -737,7 +737,7 @@ fn type_to_variable( debug_assert!(ext_tag_vec.is_empty()); let content = Content::Structure(FlatType::FunctionOrTagUnion( - tag_name.clone(), + Box::new(tag_name.clone()), *symbol, new_ext_var, )); diff --git a/compiler/solve/tests/solve_expr.rs b/compiler/solve/tests/solve_expr.rs index 7b2250d85f..1a810bbbe4 100644 --- a/compiler/solve/tests/solve_expr.rs +++ b/compiler/solve/tests/solve_expr.rs @@ -4499,6 +4499,6 @@ mod solve_expr { std::mem::size_of::(), ); - assert_eq!(query, (40, 80, 64, 56, 64)) + assert_eq!((40, 72, 56, 48, 64), query) } } diff --git a/compiler/types/src/pretty_print.rs b/compiler/types/src/pretty_print.rs index 9f4589c952..86ea524fe8 100644 --- a/compiler/types/src/pretty_print.rs +++ b/compiler/types/src/pretty_print.rs @@ -494,8 +494,8 @@ fn write_flat_type(env: &Env, flat_type: &FlatType, subs: &Subs, buf: &mut Strin FunctionOrTagUnion(tag_name, _, ext_var) => { buf.push_str("[ "); - let mut tags = MutMap::default(); - tags.insert(tag_name.clone(), vec![]); + let mut tags: MutMap = MutMap::default(); + tags.insert(*tag_name.clone(), vec![]); let ext_content = write_sorted_tags(env, subs, buf, &tags, *ext_var); buf.push_str(" ]"); @@ -558,7 +558,7 @@ pub fn chase_ext_tag_union<'a>( chase_ext_tag_union(subs, *ext_var, fields) } Content::Structure(FunctionOrTagUnion(tag_name, _, ext_var)) => { - fields.push((tag_name.clone(), vec![])); + fields.push((*tag_name.clone(), vec![])); chase_ext_tag_union(subs, *ext_var, fields) } diff --git a/compiler/types/src/solved_types.rs b/compiler/types/src/solved_types.rs index 62e310362c..a21e4c1600 100644 --- a/compiler/types/src/solved_types.rs +++ b/compiler/types/src/solved_types.rs @@ -433,7 +433,7 @@ impl SolvedType { FunctionOrTagUnion(tag_name, symbol, ext_var) => { let ext = Self::from_var_help(subs, recursion_vars, *ext_var); - SolvedType::FunctionOrTagUnion(tag_name.clone(), *symbol, Box::new(ext)) + SolvedType::FunctionOrTagUnion(*tag_name.clone(), *symbol, Box::new(ext)) } RecursiveTagUnion(rec_var, tags, ext_var) => { recursion_vars.insert(subs, *rec_var); diff --git a/compiler/types/src/subs.rs b/compiler/types/src/subs.rs index 4555d63af8..67f3174ed8 100644 --- a/compiler/types/src/subs.rs +++ b/compiler/types/src/subs.rs @@ -626,7 +626,7 @@ pub enum FlatType { Func(Vec, Variable, Variable), Record(RecordFields, Variable), TagUnion(MutMap>, Variable), - FunctionOrTagUnion(TagName, Symbol, Variable), + FunctionOrTagUnion(Box, Symbol, Variable), RecursiveTagUnion(Variable, MutMap>, Variable), Erroneous(Box), EmptyRecord, @@ -1389,6 +1389,8 @@ fn flat_type_to_err_type( } FunctionOrTagUnion(tag_name, _, ext_var) => { + let tag_name = *tag_name; + let mut err_tags = SendMap::default(); err_tags.insert(tag_name, vec![]); diff --git a/compiler/unify/src/unify.rs b/compiler/unify/src/unify.rs index 5f82907da9..ca915e69a9 100644 --- a/compiler/unify/src/unify.rs +++ b/compiler/unify/src/unify.rs @@ -1122,11 +1122,11 @@ fn unify_flat_type( } } else { let mut tags1 = MutMap::default(); - tags1.insert(tag_name_1.clone(), vec![]); + tags1.insert(*tag_name_1.clone(), vec![]); let union1 = gather_tags(subs, tags1, *ext_1); let mut tags2 = MutMap::default(); - tags2.insert(tag_name_2.clone(), vec![]); + tags2.insert(*tag_name_2.clone(), vec![]); let union2 = gather_tags(subs, tags2, *ext_2); unify_tag_union(subs, pool, ctx, union1, union2, (None, None)) @@ -1136,14 +1136,14 @@ fn unify_flat_type( let union1 = gather_tags(subs, tags1.clone(), *ext1); let mut tags2 = MutMap::default(); - tags2.insert(tag_name.clone(), vec![]); + tags2.insert(*tag_name.clone(), vec![]); let union2 = gather_tags(subs, tags2, *ext2); unify_tag_union(subs, pool, ctx, union1, union2, (None, None)) } (FunctionOrTagUnion(tag_name, _, ext1), TagUnion(tags2, ext2)) => { let mut tags1 = MutMap::default(); - tags1.insert(tag_name.clone(), vec![]); + tags1.insert(*tag_name.clone(), vec![]); let union1 = gather_tags(subs, tags1, *ext1); let union2 = gather_tags(subs, tags2.clone(), *ext2); @@ -1156,7 +1156,7 @@ fn unify_flat_type( debug_assert!(is_recursion_var(subs, *recursion_var)); let mut tags2 = MutMap::default(); - tags2.insert(tag_name.clone(), vec![]); + tags2.insert(*tag_name.clone(), vec![]); let union1 = gather_tags(subs, tags1.clone(), *ext1); let union2 = gather_tags(subs, tags2, *ext2); @@ -1175,7 +1175,7 @@ fn unify_flat_type( debug_assert!(is_recursion_var(subs, *recursion_var)); let mut tags1 = MutMap::default(); - tags1.insert(tag_name.clone(), vec![]); + tags1.insert(*tag_name.clone(), vec![]); let union1 = gather_tags(subs, tags1, *ext1); let union2 = gather_tags(subs, tags2.clone(), *ext2);