reorganization of errors

This commit is contained in:
evan-schott 2023-12-01 16:07:40 -08:00
parent 51dd61701a
commit 4b3b198850
6 changed files with 49 additions and 61 deletions

View File

@ -178,40 +178,4 @@ create_messages!(
msg: format!("Failed to write file.\nIO Error: {error}"),
help: None,
}
@backtraced
reqwest_error {
args: (error: impl Display),
msg: format!("{}", error),
help: None,
}
@backtraced
failed_to_open_file {
args: (error: impl Display),
msg: format!("Failed to open file {error}"),
help: None,
}
@backtraced
failed_to_read_file {
args: (error: impl Display),
msg: format!("Failed to read file {error}"),
help: None,
}
@backtraced
failed_to_deserialize_file {
args: (error: impl Display),
msg: format!("Failed to deserialize file {error}"),
help: None,
}
@formatted
failed_to_retrieve_dependencies {
args: (error: impl Display),
msg: format!("Failed to retrieve dependencies. {error}"),
help: None,
}
);

View File

@ -70,4 +70,11 @@ create_messages!(
msg: format!("The program scope name `{program_scope_name}` must match `{file_name}`."),
help: None,
}
@formatted
imported_program_not_found {
args: (main_program_name: impl Display, dependency_name: impl Display),
msg: format!("`{main_program_name}` imports `{dependency_name}.aleo`, but `{dependency_name}.aleo` is not found in `program.json`."),
help: Some(format!("Run `leo add {dependency_name}.aleo` to add `{dependency_name}.aleo` to `program.json`. Consult `leo add --help` for more information.")),
}
);

View File

@ -292,14 +292,6 @@ create_messages!(
help: None,
}
/// Enforce that empty functions cannot have finalize functions attached to them
@formatted
empty_function_cannot_have_finalize {
args: (),
msg: format!("Empty functions cannot have finalize functions attached to them."),
help: None,
}
@formatted
array_must_have_at_least_one_element {
args: (kind: impl Display),

View File

@ -74,4 +74,39 @@ create_messages!(
msg: format!("Duplicate dependency found: {dependency}"),
help: None,
}
@backtraced
reqwest_error {
args: (error: impl Display),
msg: format!("{}", error),
help: None,
}
@backtraced
failed_to_open_file {
args: (error: impl Display),
msg: format!("Failed to open file {error}"),
help: None,
}
@backtraced
failed_to_read_file {
args: (error: impl Display),
msg: format!("Failed to read file {error}"),
help: None,
}
@backtraced
failed_to_deserialize_file {
args: (error: impl Display),
msg: format!("Failed to deserialize file {error}"),
help: None,
}
@formatted
failed_to_retrieve_dependencies {
args: (error: impl Display),
msg: format!("Failed to retrieve dependencies. {error}"),
help: None,
}
);

View File

@ -27,6 +27,7 @@ use snarkvm::{
};
use indexmap::IndexMap;
use leo_errors::UtilError;
use std::{
io::Write,
path::{Path, PathBuf},
@ -127,7 +128,6 @@ impl Command for Build {
&build_directory,
&handler,
self.options.clone(),
false,
)?);
}
@ -183,7 +183,6 @@ fn compile_leo_file(
build: &Path,
handler: &Handler,
options: BuildOptions,
is_import: bool,
) -> Result<IndexMap<Symbol, Struct>> {
// Construct the Leo file name with extension `foo.leo`.
let file_name =
@ -191,28 +190,19 @@ fn compile_leo_file(
// If the program is an import, construct program name from file_path
// Otherwise, use the program_id found in `package.json`.
let program_name = match is_import {
false => program_id.name().to_string(),
true => file_name.strip_suffix(".leo").ok_or_else(PackageError::failed_to_get_file_name)?.to_string(),
};
let program_name = program_id.name().to_string();
// Create the path to the Aleo file.
let mut aleo_file_path = build.to_path_buf();
aleo_file_path.push(match is_import {
true => format!("{program_name}.{}", program_id.network()),
false => format!("main.{}", program_id.network()),
});
aleo_file_path.push(format!("main.{}", program_id.network()));
// Retrieve dependencies from `program.json`
let mut retriever = Retriever::new(package_path)
.map_err(|err| CliError::failed_to_retrieve_dependencies(err, Default::default()))?;
.map_err(|err| UtilError::failed_to_retrieve_dependencies(err, Default::default()))?;
// Only retrieve dependencies for main leo program
let stubs: IndexMap<Symbol, Stub> = if is_import {
IndexMap::new()
} else {
retriever.retrieve().map_err(|err| CliError::failed_to_retrieve_dependencies(err, Default::default()))?
};
let stubs: IndexMap<Symbol, Stub> =
retriever.retrieve().map_err(|err| UtilError::failed_to_retrieve_dependencies(err, Default::default()))?;
// Create a new instance of the Leo compiler.
let mut compiler = Compiler::new(

View File

@ -44,7 +44,7 @@ version = "0.1"
[dependencies.retriever]
path = "../../utils/retriever"
version = "0.1"
version = "1.10.0"
[dev-dependencies.lazy_static]
version = "1.3.0"