From 19d7f7ce09fbdad014c914b8023e41f381cd6aab Mon Sep 17 00:00:00 2001 From: Folkert Date: Tue, 1 Mar 2022 20:42:30 +0100 Subject: [PATCH] make vars-by-symbol a vector --- compiler/load/src/file.rs | 10 ++++++---- compiler/solve/src/module.rs | 4 ++-- compiler/solve/src/solve.rs | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/compiler/load/src/file.rs b/compiler/load/src/file.rs index 695be96714..e1aabf3441 100644 --- a/compiler/load/src/file.rs +++ b/compiler/load/src/file.rs @@ -502,7 +502,7 @@ enum Msg<'a> { }, FinishedAllTypeChecking { solved_subs: Solved, - exposed_vars_by_symbol: MutMap, + exposed_vars_by_symbol: Vec<(Symbol, Variable)>, exposed_aliases_by_symbol: MutMap, exposed_values: Vec, dep_idents: MutMap, @@ -2131,7 +2131,7 @@ fn finish( solved: Solved, exposed_values: Vec, exposed_aliases_by_symbol: MutMap, - exposed_vars_by_symbol: MutMap, + exposed_vars_by_symbol: Vec<(Symbol, Variable)>, dep_idents: MutMap, documentation: MutMap, ) -> LoadedModule { @@ -3104,8 +3104,10 @@ fn run_solve<'a>( let (solved_subs, solved_env, problems) = roc_solve::module::run_solve(rigid_variables, constraint, var_store); - let mut exposed_vars_by_symbol: MutMap = solved_env.vars_by_symbol(); - exposed_vars_by_symbol.retain(|k, _| exposed_symbols.contains(k)); + let exposed_vars_by_symbol: Vec<_> = solved_env + .vars_by_symbol() + .filter(|(k, _)| exposed_symbols.contains(k)) + .collect(); let solved_types = roc_solve::module::make_solved_types(&solved_subs, &exposed_vars_by_symbol); diff --git a/compiler/solve/src/module.rs b/compiler/solve/src/module.rs index 970e38a281..5cdd710458 100644 --- a/compiler/solve/src/module.rs +++ b/compiler/solve/src/module.rs @@ -12,7 +12,7 @@ pub struct SolvedModule { pub solved_types: MutMap, pub aliases: MutMap, pub exposed_symbols: Vec, - pub exposed_vars_by_symbol: MutMap, + pub exposed_vars_by_symbol: Vec<(Symbol, Variable)>, pub problems: Vec, } @@ -41,7 +41,7 @@ pub fn run_solve( pub fn make_solved_types( solved_subs: &Solved, - exposed_vars_by_symbol: &MutMap, + exposed_vars_by_symbol: &[(Symbol, Variable)], ) -> MutMap { let mut solved_types = MutMap::default(); diff --git a/compiler/solve/src/solve.rs b/compiler/solve/src/solve.rs index fc2e73191c..c7ce79b7a6 100644 --- a/compiler/solve/src/solve.rs +++ b/compiler/solve/src/solve.rs @@ -84,11 +84,11 @@ pub struct Env { } impl Env { - pub fn vars_by_symbol(&self) -> MutMap { + pub fn vars_by_symbol(&self) -> impl Iterator + '_ { let it1 = self.symbols.iter().copied(); let it2 = self.variables.iter().copied(); - it1.zip(it2).collect() + it1.zip(it2) } fn get_var_by_symbol(&self, symbol: &Symbol) -> Option {