Adds import callback resolution to resolc compiler

This commit is contained in:
DavidK
2025-01-06 16:09:53 +02:00
parent f49d145e9a
commit 9c44eeac06
+13 -2
View File
@@ -52,7 +52,7 @@ pub use self::warning::Warning;
pub mod test_utils;
pub mod tests;
use std::collections::BTreeSet;
use std::collections::{BTreeMap, BTreeSet};
use std::path::PathBuf;
/// Runs the Yul mode.
@@ -149,7 +149,7 @@ pub fn standard_output<T: Compiler>(
suppressed_warnings,
)?;
let source_code_files = solc_input
let mut source_code_files: BTreeMap<String, String> = solc_input
.sources
.iter()
.map(|(path, source)| (path.to_owned(), source.content.to_owned()))
@@ -180,6 +180,17 @@ pub fn standard_output<T: Compiler>(
}
}
// load import callbacks unspecified in input
if let Some(sources) = &solc_output.sources {
for source_path in sources.keys() {
if !source_code_files.contains_key(source_path) {
let source = std::fs::read_to_string(source_path)
.map_err(|e| anyhow::anyhow!("Can't read source file at `{}`: {}", source_path, e))?;
let _ = source_code_files.insert(source_path.clone(), source);
}
}
}
let project = solc_output.try_to_project(
source_code_files,
libraries,