diff --git a/ast/src/module.rs b/ast/src/module.rs index e82e7b2c5d..b8685a2340 100644 --- a/ast/src/module.rs +++ b/ast/src/module.rs @@ -1,12 +1,11 @@ use std::path::Path; use bumpalo::Bump; -use roc_collections::all::MutMap; use roc_load::file::LoadedModule; use roc_target::TargetInfo; pub fn load_module(src_file: &Path) -> LoadedModule { - let subs_by_module = MutMap::default(); + let subs_by_module = Default::default(); let arena = Bump::new(); let loaded = roc_load::file::load_and_typecheck( diff --git a/cli/src/build.rs b/cli/src/build.rs index 98563beedb..2d4f7fae53 100644 --- a/cli/src/build.rs +++ b/cli/src/build.rs @@ -4,7 +4,6 @@ use roc_build::{ program, }; use roc_builtins::bitcode; -use roc_collections::all::MutMap; use roc_load::file::LoadingProblem; use roc_mono::ir::OptLevel; use roc_target::TargetInfo; @@ -61,7 +60,7 @@ pub fn build_file<'a>( let target_info = TargetInfo::from(target); // Step 1: compile the app and generate the .o file - let subs_by_module = MutMap::default(); + let subs_by_module = Default::default(); // Release builds use uniqueness optimizations let stdlib = arena.alloc(roc_builtins::std::standard_stdlib()); @@ -366,7 +365,7 @@ pub fn check_file( let target_info = TargetInfo::default_x86_64(); // Step 1: compile the app and generate the .o file - let subs_by_module = MutMap::default(); + let subs_by_module = Default::default(); // Release builds use uniqueness optimizations let stdlib = arena.alloc(roc_builtins::std::standard_stdlib()); diff --git a/compiler/constrain/src/module.rs b/compiler/constrain/src/module.rs index a5e94f591e..3555fb2287 100644 --- a/compiler/constrain/src/module.rs +++ b/compiler/constrain/src/module.rs @@ -8,7 +8,20 @@ use roc_types::solved_types::{FreeVars, SolvedType}; use roc_types::subs::{StorageSubs, VarStore, Variable}; use roc_types::types::{Alias, Problem}; -pub type SubsByModule = MutMap; +#[derive(Clone, Debug, Default)] +pub struct ExposedByModule { + exposed: MutMap, +} + +impl ExposedByModule { + pub fn insert(&mut self, module_id: ModuleId, exposed: ExposedModuleTypes) { + self.exposed.insert(module_id, exposed); + } + + pub fn get(&self, module_id: &ModuleId) -> Option<&ExposedModuleTypes> { + self.exposed.get(module_id) + } +} #[derive(Clone, Debug)] pub enum ExposedModuleTypes { @@ -119,7 +132,7 @@ pub fn pre_constrain_imports( home: ModuleId, references: &MutSet, imported_modules: MutMap, - exposed_types: &mut SubsByModule, + exposed_types: &mut ExposedByModule, stdlib: &StdLib, ) -> ConstrainableImports { let mut imported_symbols = Vec::with_capacity(references.len()); diff --git a/compiler/load/src/file.rs b/compiler/load/src/file.rs index fee4793e13..70dc5921e3 100644 --- a/compiler/load/src/file.rs +++ b/compiler/load/src/file.rs @@ -11,7 +11,7 @@ use roc_can::module::{canonicalize_module_defs, Module}; use roc_collections::all::{default_hasher, BumpMap, MutMap, MutSet}; use roc_constrain::module::{ constrain_imports, constrain_module, pre_constrain_imports, ConstrainableImports, - ExposedModuleTypes, HackyImport, Import, SubsByModule, + ExposedByModule, ExposedModuleTypes, HackyImport, Import, }; use roc_module::ident::{Ident, ModuleName, QualifiedModuleName}; use roc_module::symbol::{ @@ -567,7 +567,7 @@ struct State<'a> { pub platform_data: Option, pub goal_phase: Phase, pub stdlib: &'a StdLib, - pub exposed_types: SubsByModule, + pub exposed_types: ExposedByModule, pub output_path: Option<&'a str>, pub platform_path: PlatformPath<'a>, pub target_info: TargetInfo, @@ -607,7 +607,7 @@ impl<'a> State<'a> { target_info: TargetInfo, goal_phase: Phase, stdlib: &'a StdLib, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, arc_modules: Arc>>, ident_ids_by_module: Arc>>, ) -> Self { @@ -813,7 +813,7 @@ pub fn load_and_typecheck<'a>( filename: PathBuf, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, target_info: TargetInfo, ) -> Result> { use LoadResult::*; @@ -840,7 +840,7 @@ pub fn load_and_monomorphize<'a>( filename: PathBuf, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, target_info: TargetInfo, ) -> Result, LoadingProblem<'a>> { use LoadResult::*; @@ -868,7 +868,7 @@ pub fn load_and_monomorphize_from_str<'a>( src: &'a str, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, target_info: TargetInfo, ) -> Result, LoadingProblem<'a>> { use LoadResult::*; @@ -1034,7 +1034,7 @@ fn load<'a>( load_start: LoadStart<'a>, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, goal_phase: Phase, target_info: TargetInfo, ) -> Result, LoadingProblem<'a>> { @@ -1070,7 +1070,7 @@ fn load_single_threaded<'a>( load_start: LoadStart<'a>, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, goal_phase: Phase, target_info: TargetInfo, ) -> Result, LoadingProblem<'a>> { @@ -1246,7 +1246,7 @@ fn load_multi_threaded<'a>( load_start: LoadStart<'a>, stdlib: &'a StdLib, src_dir: &Path, - exposed_types: SubsByModule, + exposed_types: ExposedByModule, goal_phase: Phase, target_info: TargetInfo, ) -> Result, LoadingProblem<'a>> { @@ -3041,7 +3041,7 @@ impl<'a> BuildTask<'a> { constraint: ConstraintSoa, var_store: VarStore, imported_modules: MutMap, - exposed_types: &mut SubsByModule, + exposed_types: &mut ExposedByModule, stdlib: &StdLib, dep_idents: MutMap, declarations: Vec, diff --git a/compiler/load/tests/test_load.rs b/compiler/load/tests/test_load.rs index 4c77e2e00c..e1ab310efb 100644 --- a/compiler/load/tests/test_load.rs +++ b/compiler/load/tests/test_load.rs @@ -19,7 +19,7 @@ mod test_load { use roc_can::def::Declaration::*; use roc_can::def::Def; use roc_collections::all::MutMap; - use roc_constrain::module::SubsByModule; + use roc_constrain::module::ExposedByModule; use roc_load::file::LoadedModule; use roc_module::ident::ModuleName; use roc_module::symbol::{Interns, ModuleId}; @@ -159,7 +159,7 @@ mod test_load { fn load_fixture( dir_name: &str, module_name: &str, - subs_by_module: SubsByModule, + subs_by_module: ExposedByModule, ) -> LoadedModule { let src_dir = fixtures_dir().join(dir_name); let filename = src_dir.join(format!("{}.roc", module_name)); diff --git a/docs/src/lib.rs b/docs/src/lib.rs index 5749caf14c..9d4c88ac08 100644 --- a/docs/src/lib.rs +++ b/docs/src/lib.rs @@ -426,7 +426,7 @@ pub fn load_modules_for_files(filenames: Vec, std_lib: StdLib) -> Vec modules.push(loaded), diff --git a/repl_eval/src/gen.rs b/repl_eval/src/gen.rs index a11ba966b8..932ae40bf3 100644 --- a/repl_eval/src/gen.rs +++ b/repl_eval/src/gen.rs @@ -1,7 +1,6 @@ use bumpalo::Bump; use std::path::{Path, PathBuf}; -use roc_collections::all::MutMap; use roc_fmt::annotation::Formattable; use roc_fmt::annotation::{Newlines, Parens}; use roc_load::file::{LoadingProblem, MonomorphizedModule}; @@ -55,7 +54,7 @@ pub fn compile_to_mono<'a>( let module_src = arena.alloc(promote_expr_to_module(src)); - let exposed_types = MutMap::default(); + let exposed_types = Default::default(); let loaded = roc_load::file::load_and_monomorphize_from_str( arena, filename,