put docs data in correct place

This commit is contained in:
faldor20 2024-03-11 15:30:47 +10:00
parent 3fe3a3439a
commit f3f86ff788
No known key found for this signature in database
GPG Key ID: F2216079B890CD57
3 changed files with 16 additions and 20 deletions

View File

@ -9,10 +9,7 @@ use bumpalo::Bump;
use parking_lot::Mutex;
use roc_can::{abilities::AbilitiesStore, expr::Declarations};
use roc_collections::{MutMap, MutSet, VecMap};
use roc_load::{
docs::{ModuleDocumentation},
CheckedModule, LoadedModule,
};
use roc_load::{docs::ModuleDocumentation, CheckedModule, LoadedModule};
use roc_module::symbol::{Interns, ModuleId, Symbol};
use roc_packaging::cache::{self, RocCacheDir};
use roc_region::all::LineInfo;
@ -41,6 +38,7 @@ pub const HIGHLIGHT_TOKENS_LEGEND: &[SemanticTokenType] = Token::LEGEND;
pub(super) struct ModulesInfo {
subs: Mutex<HashMap<ModuleId, Subs>>,
exposed: HashMap<ModuleId, Arc<Vec<(Symbol, Variable)>>>,
docs: VecMap<ModuleId, ModuleDocumentation>,
}
impl ModulesInfo {
@ -54,6 +52,7 @@ impl ModulesInfo {
fn from_analysis(
exposes: MutMap<ModuleId, Vec<(Symbol, Variable)>>,
typechecked: &MutMap<ModuleId, CheckedModule>,
docs_by_module: VecMap<ModuleId, ModuleDocumentation>,
) -> ModulesInfo {
//We wrap this in arc because later we will go through each module's imports and store the full list of symbols that each imported module exposes.
//eg: A imports B. B exposes [add, multiply, divide] and A will store a reference to that list.
@ -71,6 +70,7 @@ impl ModulesInfo {
ModulesInfo {
subs: all_subs,
exposed,
docs: docs_by_module,
}
}
}
@ -89,7 +89,6 @@ pub(super) struct AnalyzedModule {
// We need this because ModuleIds are not stable between compilations, so a ModuleId visible to
// one module may not be true global to the language server.
module_id_to_url: ModuleIdToUrl,
docs_by_module: Arc<VecMap<ModuleId, ModuleDocumentation>>,
}
#[derive(Debug, Clone)]
pub struct AnalysisResult {
@ -158,9 +157,12 @@ pub(crate) fn global_analysis(doc_info: DocInfo) -> Vec<AnalyzedDocument> {
});
let exposed_imports = resolve_exposed_imports(exposed_imports, &exposes);
let docs_by_module = Arc::new(docs_by_module);
let modules_info = Arc::new(ModulesInfo::from_analysis(exposes, &typechecked));
let modules_info = Arc::new(ModulesInfo::from_analysis(
exposes,
&typechecked,
docs_by_module,
));
let mut builder = AnalyzedDocumentBuilder {
interns: &interns,
module_id_to_url: module_id_to_url_from_sources(&sources),
@ -172,7 +174,6 @@ pub(crate) fn global_analysis(doc_info: DocInfo) -> Vec<AnalyzedDocument> {
exposed_imports,
imports: &mut imports,
modules_info,
docs_by_module,
};
for (module_id, (path, source)) in sources {
@ -262,7 +263,6 @@ struct AnalyzedDocumentBuilder<'a> {
imports: &'a mut MutMap<ModuleId, MutSet<ModuleId>>,
exposed_imports: HashMap<ModuleId, Vec<(Symbol, Variable)>>,
modules_info: Arc<ModulesInfo>,
docs_by_module: Arc<VecMap<ModuleId, ModuleDocumentation>>,
}
impl<'a> AnalyzedDocumentBuilder<'a> {
@ -304,7 +304,6 @@ impl<'a> AnalyzedDocumentBuilder<'a> {
modules_info: self.modules_info.clone(),
interns: self.interns.clone(),
module_id_to_url: self.module_id_to_url.clone(),
docs_by_module: self.docs_by_module.clone(),
};
let line_info = LineInfo::new(&source);

View File

@ -171,7 +171,7 @@ impl AnalyzedDocument {
module_id,
interns,
abilities,
docs_by_module,
modules_info,
..
} = self.module()?;
@ -180,7 +180,8 @@ impl AnalyzedDocument {
let docs = roc_can::traverse::find_closest_symbol_at(pos, declarations, abilities)
.and_then(|symb| {
let symb = symb.implementation_symbol();
docs_by_module
modules_info
.docs
.get(module_id)?
.entries
.iter()
@ -253,7 +254,6 @@ impl AnalyzedDocument {
declarations,
exposed_imports,
imports,
docs_by_module,
modules_info,
..
} = self.module()?;
@ -274,7 +274,6 @@ impl AnalyzedDocument {
interns,
imports,
modules_info,
docs_by_module,
true,
))
} else {
@ -300,7 +299,6 @@ impl AnalyzedDocument {
interns,
imports,
modules_info,
docs_by_module,
true,
);
Some(completions)
@ -313,7 +311,7 @@ impl AnalyzedDocument {
&mut subs.clone(),
module_id,
interns,
docs_by_module.get(module_id),
modules_info.docs.get(module_id),
exposed_imports,
);
Some(completions)

View File

@ -3,7 +3,7 @@ use std::{collections::HashMap, sync::Arc};
use log::{debug, warn};
use roc_can::{expr::Declarations, traverse::Visitor};
use roc_collections::{MutMap, VecMap};
use roc_collections::MutMap;
use roc_load::docs::{DocDef, ModuleDocumentation};
use roc_module::symbol::{Interns, ModuleId, Symbol};
use roc_region::all::Position;
@ -57,7 +57,6 @@ pub(super) fn get_module_completion_items(
interns: &Interns,
imported_modules: &HashMap<ModuleId, Arc<Vec<(Symbol, Variable)>>>,
modules_info: &ModulesInfo,
docs: &VecMap<ModuleId, ModuleDocumentation>,
just_modules: bool,
) -> Vec<CompletionItem> {
let module_completions = imported_modules
@ -75,7 +74,7 @@ pub(super) fn get_module_completion_items(
mod_id,
interns,
exposed_symbols,
docs.get(mod_id),
modules_info.docs.get(mod_id),
modules_info,
)),
..Default::default()
@ -87,7 +86,7 @@ pub(super) fn get_module_completion_items(
exposed_symbols,
modules_info,
mod_id,
docs.get(mod_id),
modules_info.docs.get(mod_id),
interns,
)
} else {