This commit is contained in:
pgherveou
2025-10-08 06:28:57 +00:00
parent 765569a8b6
commit 1f84ce6f61
34 changed files with 1093 additions and 503 deletions
+3 -1
View File
@@ -141,7 +141,9 @@ impl SolidityCompiler for Resolc {
output_selection: Some(SolcStandardJsonInputSettingsSelection::new_required()),
via_ir: Some(true),
optimizer: SolcStandardJsonInputSettingsOptimizer::new(
optimization.unwrap_or(ModeOptimizerSetting::M0).optimizations_enabled(),
optimization
.unwrap_or(ModeOptimizerSetting::M0)
.optimizations_enabled(),
None,
&Version::new(0, 0, 0),
false,
+7 -2
View File
@@ -56,7 +56,9 @@ impl Solc {
// resolution for us. Therefore, even if the download didn't proceed, this function will
// resolve the version requirement into a canonical version of the compiler. It's then up
// to us to either use the provided path or not.
let version = version.into().unwrap_or_else(|| solc_configuration.version.clone().into());
let version = version
.into()
.unwrap_or_else(|| solc_configuration.version.clone().into());
let (version, path) =
download_solc(working_directory_configuration.as_path(), version, false)
.await
@@ -250,7 +252,10 @@ impl SolidityCompiler for Solc {
let map = compiler_output
.contracts
.entry(contract_path.canonicalize().with_context(|| {
format!("Failed to canonicalize contract path {}", contract_path.display())
format!(
"Failed to canonicalize contract path {}",
contract_path.display()
)
})?)
.or_default();
for (contract_name, contract_info) in contracts.into_iter() {
+22 -8
View File
@@ -9,8 +9,9 @@ use semver::Version;
async fn contracts_can_be_compiled_with_solc() {
// Arrange
let args = TestExecutionContext::default();
let solc =
Solc::new(&args, VersionOrRequirement::Version(Version::new(0, 8, 30))).await.unwrap();
let solc = Solc::new(&args, VersionOrRequirement::Version(Version::new(0, 8, 30)))
.await
.unwrap();
// Act
let output = Compiler::new()
@@ -27,12 +28,18 @@ async fn contracts_can_be_compiled_with_solc() {
let main_file_contracts = output
.contracts
.get(&PathBuf::from("./tests/assets/array_one_element/main.sol").canonicalize().unwrap())
.get(
&PathBuf::from("./tests/assets/array_one_element/main.sol")
.canonicalize()
.unwrap(),
)
.unwrap();
let callable_file_contracts = output
.contracts
.get(
&PathBuf::from("./tests/assets/array_one_element/callable.sol").canonicalize().unwrap(),
&PathBuf::from("./tests/assets/array_one_element/callable.sol")
.canonicalize()
.unwrap(),
)
.unwrap();
assert!(main_file_contracts.contains_key("Main"));
@@ -43,8 +50,9 @@ async fn contracts_can_be_compiled_with_solc() {
async fn contracts_can_be_compiled_with_resolc() {
// Arrange
let args = TestExecutionContext::default();
let resolc =
Resolc::new(&args, VersionOrRequirement::Version(Version::new(0, 8, 30))).await.unwrap();
let resolc = Resolc::new(&args, VersionOrRequirement::Version(Version::new(0, 8, 30)))
.await
.unwrap();
// Act
let output = Compiler::new()
@@ -61,12 +69,18 @@ async fn contracts_can_be_compiled_with_resolc() {
let main_file_contracts = output
.contracts
.get(&PathBuf::from("./tests/assets/array_one_element/main.sol").canonicalize().unwrap())
.get(
&PathBuf::from("./tests/assets/array_one_element/main.sol")
.canonicalize()
.unwrap(),
)
.unwrap();
let callable_file_contracts = output
.contracts
.get(
&PathBuf::from("./tests/assets/array_one_element/callable.sol").canonicalize().unwrap(),
&PathBuf::from("./tests/assets/array_one_element/callable.sol")
.canonicalize()
.unwrap(),
)
.unwrap();
assert!(main_file_contracts.contains_key("Main"));