working completions

This commit is contained in:
Eli Dowling 2024-02-11 10:48:02 +10:00 committed by faldor20
parent f5e32f7e16
commit 3027fc2284
No known key found for this signature in database
GPG key ID: F2216079B890CD57
6 changed files with 238 additions and 29 deletions

View file

@ -2537,6 +2537,14 @@ fn update<'a>(
}
report_unused_imported_modules(&mut state, module_id, &constrained_module);
state
.module_cache
.imported_modules
.insert(module_id, constrained_module.imported_modules.clone());
state
.module_cache
.exposed_imports
.insert(module_id, constrained_module.module.exposed_imports.clone());
state
.module_cache
@ -2583,6 +2591,10 @@ fn update<'a>(
.module_cache
.type_problems
.insert(module_id, solved_module.problems);
state
.module_cache
.exposes
.insert(module_id, solved_module.exposed_vars_by_symbol.clone());
let should_include_expects = (!loc_expects.is_empty() || !loc_dbgs.is_empty()) && {
let modules = state.arc_modules.lock();
@ -2737,6 +2749,7 @@ fn update<'a>(
state.module_cache.checked.insert(
module_id,
CheckedModule {
aliases: solved_module.aliases,
solved_subs,
decls,
abilities_store,
@ -3400,6 +3413,10 @@ fn finish(
timings: state.timings,
docs_by_module,
abilities_store,
imported_modules: state.module_cache.imported_modules,
exposed_imports: state.module_cache.exposed_imports,
imports: state.module_cache.imports,
exposes: state.module_cache.exposes,
}
}

View file

@ -46,6 +46,11 @@ pub struct LoadedModule {
pub docs_by_module: Vec<(ModuleId, ModuleDocumentation)>,
pub abilities_store: AbilitiesStore,
pub typechecked: MutMap<ModuleId, CheckedModule>,
pub imports: MutMap<ModuleId, MutSet<ModuleId>>,
pub imported_modules: MutMap<ModuleId, MutMap<ModuleId, Region>>,
pub exposed_imports: MutMap<ModuleId, MutMap<Symbol, Region>>,
pub exposes: MutMap<ModuleId, Vec<(Symbol, Variable)>>,
}
impl LoadedModule {
@ -132,6 +137,10 @@ pub struct TypeCheckedModule<'a> {
#[derive(Debug)]
pub struct CheckedModule {
/// all aliases and their definitions. this has to include non-exposed aliases
/// because exposed aliases can depend on non-exposed ones)
pub aliases: MutMap<Symbol, (bool, Alias)>,
pub solved_subs: Solved<Subs>,
pub decls: Declarations,
pub abilities_store: AbilitiesStore,

View file

@ -9,7 +9,9 @@ use roc_module::ident::ModuleName;
use roc_module::symbol::{ModuleId, PQModuleName, Symbol};
use roc_mono::ir::ExternalSpecializations;
use roc_problem::Severity;
use roc_region::all::Region;
use roc_solve_problem::TypeError;
use roc_types::subs::Variable;
use roc_types::types::Alias;
use std::path::PathBuf;
@ -33,6 +35,9 @@ pub(crate) struct ModuleCache<'a> {
/// Various information
pub(crate) imports: MutMap<ModuleId, MutSet<ModuleId>>,
pub(crate) exposes: MutMap<ModuleId, Vec<(Symbol, Variable)>>,
pub(crate) imported_modules: MutMap<ModuleId, MutMap<ModuleId, Region>>,
pub(crate) exposed_imports: MutMap<ModuleId, MutMap<Symbol, Region>>,
pub(crate) top_level_thunks: MutMap<ModuleId, MutSet<Symbol>>,
pub(crate) documentation: VecMap<ModuleId, ModuleDocumentation>,
pub(crate) can_problems: MutMap<ModuleId, Vec<roc_problem::can::Problem>>,
@ -103,6 +108,9 @@ impl Default for ModuleCache<'_> {
late_specializations: Default::default(),
external_specializations_requested: Default::default(),
imports: Default::default(),
imported_modules: Default::default(),
exposed_imports: Default::default(),
exposes: Default::default(),
top_level_thunks: Default::default(),
documentation: Default::default(),
can_problems: Default::default(),