diff --git a/ethers-solc/src/error.rs b/ethers-solc/src/error.rs index fc00601c..72dbc95e 100644 --- a/ethers-solc/src/error.rs +++ b/ethers-solc/src/error.rs @@ -32,6 +32,13 @@ pub enum SolcError { Resolve(SolcIoError), #[error("File could not be resolved due to broken symlink: {0}.")] ResolveBadSymlink(SolcIoError), + #[error( + r#"Failed to resolve file: {0}. + --> {1:?} + {2:?} + Check configured remappings."# + )] + FailedResolveImport(SolcIoError, PathBuf, PathBuf), #[cfg(feature = "svm-solc")] #[error(transparent)] SvmError(#[from] svm::SolcVmError), diff --git a/ethers-solc/src/resolver/mod.rs b/ethers-solc/src/resolver/mod.rs index 945e30e8..252af2ca 100644 --- a/ethers-solc/src/resolver/mod.rs +++ b/ethers-solc/src/resolver/mod.rs @@ -368,7 +368,20 @@ impl Graph { &mut resolved_solc_include_paths, ) { Ok(import) => { - add_node(&mut unresolved, &mut index, &mut resolved_imports, import)?; + add_node(&mut unresolved, &mut index, &mut resolved_imports, import) + .map_err(|err| { + match err { + SolcError::Resolve(err) => { + // make the error more verbose + SolcError::FailedResolveImport( + err, + node.path.clone(), + import_path.clone(), + ) + } + _ => err, + } + })? } Err(err) => { unresolved_imports.insert((import_path.to_path_buf(), node.path.clone()));