From 55e1e86dc20ca2c45df2db2470f633a42b79d1ab Mon Sep 17 00:00:00 2001 From: Folkert Date: Sat, 27 Jun 2020 23:56:53 +0200 Subject: [PATCH] cleanup --- compiler/solve/tests/helpers/mod.rs | 2 +- compiler/types/src/pretty_print.rs | 9 ++++++--- compiler/unify/src/unify.rs | 16 ++++++++++------ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/compiler/solve/tests/helpers/mod.rs b/compiler/solve/tests/helpers/mod.rs index a0a495a77b..a301d436b7 100644 --- a/compiler/solve/tests/helpers/mod.rs +++ b/compiler/solve/tests/helpers/mod.rs @@ -388,7 +388,7 @@ pub fn assert_correct_variable_usage(constraint: &Constraint) { println!("difference: {:?}", &diff); - // panic!("variable usage problem (see stdout for details)"); + panic!("variable usage problem (see stdout for details)"); } } diff --git a/compiler/types/src/pretty_print.rs b/compiler/types/src/pretty_print.rs index d85bcca950..6482090a43 100644 --- a/compiler/types/src/pretty_print.rs +++ b/compiler/types/src/pretty_print.rs @@ -601,7 +601,8 @@ fn write_boolean(env: &Env, boolean: Bool, subs: &Subs, buf: &mut String, parens buf.push_str("Shared"); } Bool::Container(cvar, mvars) if mvars.iter().all(|v| var_is_shared(subs, *v)) => { - // Bool::Container(cvar, mvars) if mvars.is_empty() => { + debug_assert!(!var_is_shared(subs, cvar)); + write_content( env, subs.get_without_compacting(cvar).content, @@ -611,8 +612,11 @@ fn write_boolean(env: &Env, boolean: Bool, subs: &Subs, buf: &mut String, parens ); } Bool::Container(cvar, mvars) => { + debug_assert!(!var_is_shared(subs, cvar)); + let mut buffers = Vec::with_capacity(mvars.len()); for v in mvars { + // don't print shared in a container if var_is_shared(subs, v) { continue; } @@ -625,11 +629,10 @@ fn write_boolean(env: &Env, boolean: Bool, subs: &Subs, buf: &mut String, parens &mut inner_buf, parens, ); - // buffers_set.insert(inner_buf); buffers.push(inner_buf); } - // let mut buffers: Vec = buffers_set.into_iter().collect(); + // sort type variables alphabetically buffers.sort(); let combined = buffers.join(" | "); diff --git a/compiler/unify/src/unify.rs b/compiler/unify/src/unify.rs index 8f330d7c45..4bdc317597 100644 --- a/compiler/unify/src/unify.rs +++ b/compiler/unify/src/unify.rs @@ -67,10 +67,10 @@ macro_rules! mismatch { type Pool = Vec; pub struct Context { - pub first: Variable, - pub first_desc: Descriptor, - pub second: Variable, - pub second_desc: Descriptor, + first: Variable, + first_desc: Descriptor, + second: Variable, + second_desc: Descriptor, } #[derive(Debug)] @@ -668,8 +668,10 @@ fn unify_flat_type( outcome } (Container(cvar1, mvars1), Container(cvar2, mvars2)) => { + let mut outcome = vec![]; + // unify cvar1 and cvar2? - unify_pool(subs, pool, *cvar1, *cvar2); + outcome.extend(unify_pool(subs, pool, *cvar1, *cvar2)); let mvars: SendSet = mvars1 .into_iter() @@ -689,7 +691,9 @@ fn unify_flat_type( let content = Content::Structure(FlatType::Boolean(Bool::Container(*cvar1, mvars))); - merge(subs, ctx, content) + outcome.extend(merge(subs, ctx, content)); + + outcome } } }