From f1a8a216a57ca8639a64fca5d926d729721c8824 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Mon, 27 Feb 2023 21:24:48 +0100 Subject: [PATCH] feat(solc): add is_empty fn for structs of Options (#2195) --- ethers-solc/src/artifacts/mod.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ethers-solc/src/artifacts/mod.rs b/ethers-solc/src/artifacts/mod.rs index ddd1f47a..37eb52b1 100644 --- a/ethers-solc/src/artifacts/mod.rs +++ b/ethers-solc/src/artifacts/mod.rs @@ -683,6 +683,23 @@ pub struct OptimizerDetails { pub yul_details: Option, } +// === impl OptimizerDetails === + +impl OptimizerDetails { + /// Returns true if no settings are set. + pub fn is_empty(&self) -> bool { + self.peephole.is_none() && + self.inliner.is_none() && + self.jumpdest_remover.is_none() && + self.order_literals.is_none() && + self.deduplicate.is_none() && + self.cse.is_none() && + self.constant_optimizer.is_none() && + self.yul.is_none() && + self.yul_details.as_ref().map(|yul| yul.is_empty()).unwrap_or(true) + } +} + #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, Default)] #[serde(rename_all = "camelCase")] pub struct YulDetails { @@ -696,6 +713,15 @@ pub struct YulDetails { pub optimizer_steps: Option, } +// === impl YulDetails === + +impl YulDetails { + /// Returns true if no settings are set. + pub fn is_empty(&self) -> bool { + self.stack_allocation.is_none() && self.optimizer_steps.is_none() + } +} + #[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] pub enum EvmVersion { Homestead,