mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
Module aliases passed into LoadedModule, and used in docs to generate docs for aliases exposed by the module
This commit is contained in:
parent
fe3919f66e
commit
9d2976f14f
2 changed files with 24 additions and 2 deletions
|
@ -621,6 +621,7 @@ pub struct LoadedModule {
|
||||||
pub type_problems: MutMap<ModuleId, Vec<solve::TypeError>>,
|
pub type_problems: MutMap<ModuleId, Vec<solve::TypeError>>,
|
||||||
pub declarations_by_id: MutMap<ModuleId, Vec<Declaration>>,
|
pub declarations_by_id: MutMap<ModuleId, Vec<Declaration>>,
|
||||||
pub exposed_to_host: MutMap<Symbol, Variable>,
|
pub exposed_to_host: MutMap<Symbol, Variable>,
|
||||||
|
pub exposed_aliases: MutMap<Symbol, Alias>,
|
||||||
pub header_sources: MutMap<ModuleId, (PathBuf, Box<str>)>,
|
pub header_sources: MutMap<ModuleId, (PathBuf, Box<str>)>,
|
||||||
pub sources: MutMap<ModuleId, (PathBuf, Box<str>)>,
|
pub sources: MutMap<ModuleId, (PathBuf, Box<str>)>,
|
||||||
pub timings: MutMap<ModuleId, ModuleTiming>,
|
pub timings: MutMap<ModuleId, ModuleTiming>,
|
||||||
|
@ -763,6 +764,7 @@ enum Msg<'a> {
|
||||||
FinishedAllTypeChecking {
|
FinishedAllTypeChecking {
|
||||||
solved_subs: Solved<Subs>,
|
solved_subs: Solved<Subs>,
|
||||||
exposed_vars_by_symbol: MutMap<Symbol, Variable>,
|
exposed_vars_by_symbol: MutMap<Symbol, Variable>,
|
||||||
|
exposed_aliases_by_symbol: MutMap<Symbol, Alias>,
|
||||||
documentation: MutMap<ModuleId, ModuleDocumentation>,
|
documentation: MutMap<ModuleId, ModuleDocumentation>,
|
||||||
},
|
},
|
||||||
FoundSpecializations {
|
FoundSpecializations {
|
||||||
|
@ -1510,6 +1512,7 @@ where
|
||||||
Msg::FinishedAllTypeChecking {
|
Msg::FinishedAllTypeChecking {
|
||||||
solved_subs,
|
solved_subs,
|
||||||
exposed_vars_by_symbol,
|
exposed_vars_by_symbol,
|
||||||
|
exposed_aliases_by_symbol,
|
||||||
documentation,
|
documentation,
|
||||||
} => {
|
} => {
|
||||||
// We're done! There should be no more messages pending.
|
// We're done! There should be no more messages pending.
|
||||||
|
@ -1525,6 +1528,7 @@ where
|
||||||
return Ok(LoadResult::TypeChecked(finish(
|
return Ok(LoadResult::TypeChecked(finish(
|
||||||
state,
|
state,
|
||||||
solved_subs,
|
solved_subs,
|
||||||
|
exposed_aliases_by_symbol,
|
||||||
exposed_vars_by_symbol,
|
exposed_vars_by_symbol,
|
||||||
documentation,
|
documentation,
|
||||||
)));
|
)));
|
||||||
|
@ -1939,6 +1943,7 @@ fn update<'a>(
|
||||||
.send(Msg::FinishedAllTypeChecking {
|
.send(Msg::FinishedAllTypeChecking {
|
||||||
solved_subs,
|
solved_subs,
|
||||||
exposed_vars_by_symbol: solved_module.exposed_vars_by_symbol,
|
exposed_vars_by_symbol: solved_module.exposed_vars_by_symbol,
|
||||||
|
exposed_aliases_by_symbol: solved_module.aliases,
|
||||||
documentation,
|
documentation,
|
||||||
})
|
})
|
||||||
.map_err(|_| LoadingProblem::MsgChannelDied)?;
|
.map_err(|_| LoadingProblem::MsgChannelDied)?;
|
||||||
|
@ -2263,6 +2268,7 @@ fn finish_specialization(
|
||||||
fn finish(
|
fn finish(
|
||||||
state: State,
|
state: State,
|
||||||
solved: Solved<Subs>,
|
solved: Solved<Subs>,
|
||||||
|
exposed_aliases_by_symbol: MutMap<Symbol, Alias>,
|
||||||
exposed_vars_by_symbol: MutMap<Symbol, Variable>,
|
exposed_vars_by_symbol: MutMap<Symbol, Variable>,
|
||||||
documentation: MutMap<ModuleId, ModuleDocumentation>,
|
documentation: MutMap<ModuleId, ModuleDocumentation>,
|
||||||
) -> LoadedModule {
|
) -> LoadedModule {
|
||||||
|
@ -2290,6 +2296,10 @@ fn finish(
|
||||||
.map(|(id, (path, src))| (id, (path, src.into())))
|
.map(|(id, (path, src))| (id, (path, src.into())))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
dbg!(&exposed_vars_by_symbol);
|
||||||
|
let exposed_aliases = exposed_aliases_by_symbol;
|
||||||
|
// todo!("Get exposed aliases");
|
||||||
|
|
||||||
LoadedModule {
|
LoadedModule {
|
||||||
module_id: state.root_id,
|
module_id: state.root_id,
|
||||||
interns,
|
interns,
|
||||||
|
@ -2298,6 +2308,7 @@ fn finish(
|
||||||
type_problems: state.module_cache.type_problems,
|
type_problems: state.module_cache.type_problems,
|
||||||
declarations_by_id: state.declarations_by_id,
|
declarations_by_id: state.declarations_by_id,
|
||||||
exposed_to_host: exposed_vars_by_symbol.into_iter().collect(),
|
exposed_to_host: exposed_vars_by_symbol.into_iter().collect(),
|
||||||
|
exposed_aliases,
|
||||||
header_sources,
|
header_sources,
|
||||||
sources,
|
sources,
|
||||||
timings: state.timings,
|
timings: state.timings,
|
||||||
|
|
|
@ -63,12 +63,23 @@ pub fn generate(filenames: Vec<PathBuf>, std_lib: StdLib, build_dir: &Path) {
|
||||||
|
|
||||||
// Write each package's module docs html file
|
// Write each package's module docs html file
|
||||||
for loaded_module in package.modules.iter_mut() {
|
for loaded_module in package.modules.iter_mut() {
|
||||||
let exposed_values = loaded_module
|
let mut exposed_values = loaded_module
|
||||||
.exposed_to_host
|
.exposed_to_host
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(symbol, _)| symbol.ident_string(&loaded_module.interns).to_string())
|
.map(|(symbol, _)| symbol.ident_string(&loaded_module.interns).to_string())
|
||||||
.collect::<Vec<String>>();
|
.collect::<Vec<String>>();
|
||||||
|
|
||||||
|
let mut exposed_aliases = loaded_module
|
||||||
|
.exposed_aliases
|
||||||
|
.iter()
|
||||||
|
.map(|(symbol, _)| symbol.ident_string(&loaded_module.interns).to_string())
|
||||||
|
.collect::<Vec<String>>();
|
||||||
|
|
||||||
|
let mut exports = Vec::new();
|
||||||
|
|
||||||
|
exports.append(&mut exposed_values);
|
||||||
|
exports.append(&mut exposed_aliases);
|
||||||
|
|
||||||
for module in loaded_module.documentation.values_mut() {
|
for module in loaded_module.documentation.values_mut() {
|
||||||
let module_dir = build_dir.join(module.name.replace(".", "/").as_str());
|
let module_dir = build_dir.join(module.name.replace(".", "/").as_str());
|
||||||
|
|
||||||
|
@ -83,7 +94,7 @@ pub fn generate(filenames: Vec<PathBuf>, std_lib: StdLib, build_dir: &Path) {
|
||||||
)
|
)
|
||||||
.replace(
|
.replace(
|
||||||
"<!-- Module Docs -->",
|
"<!-- Module Docs -->",
|
||||||
render_main_content(&loaded_module.interns, &exposed_values, module).as_str(),
|
render_main_content(&loaded_module.interns, &exports, module).as_str(),
|
||||||
);
|
);
|
||||||
|
|
||||||
fs::write(module_dir.join("index.html"), rendered_module)
|
fs::write(module_dir.join("index.html"), rendered_module)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue