mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-03 00:24:34 +00:00
use all aliases that are in scope (to support imported aliases)
This commit is contained in:
parent
5196ae9df2
commit
bf063d1d57
5 changed files with 38 additions and 11 deletions
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue