revive_solc_json_interface/standard_json/input/settings/selection/file/
flag.rs

1//! The `solc --standard-json` expected output selection flag.
2
3use serde::Deserialize;
4use serde::Serialize;
5
6/// The `solc --standard-json` expected output selection flag.
7#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)]
8pub enum Flag {
9    /// The ABI JSON.
10    #[serde(rename = "abi")]
11    ABI,
12    /// The metadata.
13    #[serde(rename = "metadata")]
14    Metadata,
15    /// The developer documentation.
16    #[serde(rename = "devdoc")]
17    Devdoc,
18    /// The user documentation.
19    #[serde(rename = "userdoc")]
20    Userdoc,
21    /// The function signature hashes JSON.
22    #[serde(rename = "evm.methodIdentifiers")]
23    MethodIdentifiers,
24    /// The storage layout.
25    #[serde(rename = "storageLayout")]
26    StorageLayout,
27    /// The AST JSON.
28    #[serde(rename = "ast")]
29    AST,
30    /// The Yul IR.
31    #[serde(rename = "irOptimized")]
32    Yul,
33    /// The EVM legacy assembly JSON.
34    #[serde(rename = "evm.legacyAssembly")]
35    EVMLA,
36    #[serde(rename = "evm.bytecode")]
37    EVMBC,
38    #[serde(rename = "evm.deployedBytecode")]
39    EVMDBC,
40    /// The assembly code
41    #[serde(rename = "evm.assembly")]
42    Assembly,
43    /// The Ir
44    #[serde(rename = "ir")]
45    Ir,
46}
47
48impl std::fmt::Display for Flag {
49    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50        match self {
51            Self::ABI => write!(f, "abi"),
52            Self::Metadata => write!(f, "metadata"),
53            Self::Devdoc => write!(f, "devdoc"),
54            Self::Userdoc => write!(f, "userdoc"),
55            Self::MethodIdentifiers => write!(f, "evm.methodIdentifiers"),
56            Self::StorageLayout => write!(f, "storageLayout"),
57            Self::AST => write!(f, "ast"),
58            Self::Yul => write!(f, "irOptimized"),
59            Self::EVMLA => write!(f, "evm.legacyAssembly"),
60            Self::EVMBC => write!(f, "evm.bytecode"),
61            Self::EVMDBC => write!(f, "evm.deployedBytecode"),
62            Self::Assembly => write!(f, "evm.assembly"),
63            Self::Ir => write!(f, "ir"),
64        }
65    }
66}