Remove param arguments from TOO MANY ARGS error

This commit is contained in:
Agus Zubiaga 2024-08-27 15:57:47 -03:00
parent 8b9cb22f49
commit 658c6963c5
No known key found for this signature in database
7 changed files with 173 additions and 8 deletions

View file

@ -4627,6 +4627,7 @@ struct SolveResult {
exposed_vars_by_symbol: Vec<(Symbol, Variable)>,
problems: Vec<TypeError>,
abilities_store: AbilitiesStore,
imported_modules_with_params: Vec<ModuleId>,
#[cfg(debug_assertions)]
checkmate: Option<roc_checkmate::Collector>,
@ -4672,6 +4673,11 @@ fn run_solve_solve(
&mut imported_flex_vars,
);
let imported_modules_with_params = imported_param_vars
.keys()
.copied()
.collect::<Vec<ModuleId>>();
let actual_constraint = constraints.let_import_constraint(
imported_rigid_vars,
imported_flex_vars,
@ -4754,6 +4760,7 @@ fn run_solve_solve(
exposed_vars_by_symbol,
problems: errors,
abilities_store: resolved_abilities_store,
imported_modules_with_params,
#[cfg(debug_assertions)]
checkmate,
@ -4786,6 +4793,7 @@ fn run_solve<'a>(
let aliases = module.aliases.clone();
let opt_params_var = module.module_params.as_ref().map(|params| params.whole_var);
let home_has_params = opt_params_var.is_some();
let mut module = module;
let loc_expects = std::mem::take(&mut module.loc_expects);
@ -4820,6 +4828,8 @@ fn run_solve<'a>(
exposed_vars_by_symbol,
problems: vec![],
abilities_store: abilities,
// todo: agus
imported_modules_with_params: vec![],
#[cfg(debug_assertions)]
checkmate: None,
@ -4847,8 +4857,9 @@ fn run_solve<'a>(
solved: mut solved_subs,
solved_implementations,
exposed_vars_by_symbol,
problems,
mut problems,
abilities_store,
imported_modules_with_params,
#[cfg(debug_assertions)]
checkmate,
@ -4863,6 +4874,14 @@ fn run_solve<'a>(
&abilities_store,
);
// todo: check exec mode
roc_lower_params::type_error::remove_module_param_arguments(
&mut problems,
home_has_params,
&decls.symbols,
imported_modules_with_params,
);
let solved_module = SolvedModule {
exposed_vars_by_symbol,
problems,