Use module's parent dir if main roc file is not found

This commit is contained in:
Agus Zubiaga 2024-06-07 17:42:04 -03:00
parent 2da7ea394b
commit f5e08cb917
No known key found for this signature in database

View file

@ -1145,16 +1145,8 @@ impl<'a> LoadStart<'a> {
match header_type {
Module { .. } | Builtin { .. } | Hosted { .. } => {
let main_path = opt_main_path.or_else(|| loop {
match src_dir.join("main.roc").canonicalize() {
Ok(path) => break Some(path),
Err(_) => {
if !src_dir.pop() {
break None;
}
}
}
});
let main_path =
opt_main_path.or_else(|| find_main_roc_recursively(&mut src_dir));
let cache_dir = roc_cache_dir.as_persistent_path();
@ -1180,7 +1172,7 @@ impl<'a> LoadStart<'a> {
}
}
header_output
adjust_header_paths(header_output, &mut src_dir)
}
Err(problem) => {
@ -1257,6 +1249,23 @@ impl<'a> LoadStart<'a> {
}
}
fn find_main_roc_recursively(src_dir: &mut PathBuf) -> Option<PathBuf> {
let original_src_dir = src_dir.clone();
loop {
match src_dir.join("main.roc").canonicalize() {
Ok(main_roc) => break Some(main_roc),
Err(_) => {
if !src_dir.pop() {
// reached the root, no main.roc found
*src_dir = original_src_dir;
break None;
}
}
}
}
}
fn load_packages_from_main<'a>(
arena: &'a Bump,
src_dir: PathBuf,