use all aliases that are in scope (to support imported aliases)

This commit is contained in:
Folkert 2022-03-18 20:44:13 +01:00
parent 5196ae9df2
commit bf063d1d57
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
5 changed files with 38 additions and 11 deletions

View file

@ -3287,6 +3287,8 @@ fn canonicalize_and_constrain<'a>(
..
} = parsed;
let before = roc_types::types::get_type_clone_count();
let mut var_store = VarStore::default();
let canonicalized = canonicalize_module_defs(
arena,
@ -3302,6 +3304,16 @@ fn canonicalize_and_constrain<'a>(
&mut var_store,
);
let after = roc_types::types::get_type_clone_count();
log!(
"canonicalize of {:?} cloned Type {} times ({} -> {})",
module_id,
after - before,
before,
after
);
let canonicalize_end = SystemTime::now();
module_timing.canonicalize = canonicalize_end.duration_since(canonicalize_start).unwrap();
@ -3315,7 +3327,7 @@ fn canonicalize_and_constrain<'a>(
ModuleNameEnum::App(_) => None,
ModuleNameEnum::Interface(name) | ModuleNameEnum::Hosted(name) => {
let docs = crate::docs::generate_module_docs(
module_output.scope,
module_output.scope.clone(),
name.as_str().into(),
&module_output.ident_ids,
parsed_defs,
@ -3325,17 +3337,34 @@ fn canonicalize_and_constrain<'a>(
}
};
let before = roc_types::types::get_type_clone_count();
let mut constraints = Constraints::new();
let constraint =
constrain_module(&mut constraints, &module_output.declarations, module_id);
let after = roc_types::types::get_type_clone_count();
log!(
"constraint gen of {:?} cloned Type {} times ({} -> {})",
module_id,
after - before,
before,
after
);
// module_output.aliases only has aliases defined in this module
// during solving, we need all aliases that were in scope
let aliases = module_output.scope.aliases.into_iter().collect();
let module = Module {
module_id,
exposed_imports: module_output.exposed_imports,
exposed_symbols,
referenced_values: module_output.referenced_values,
referenced_types: module_output.referenced_types,
aliases: module_output.aliases,
aliases,
rigid_variables: module_output.rigid_variables,
};