mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-07-29 07:45:44 +00:00
factor out solc JSON interface crate (#264)
The differential testing framework will make a second consumer. There seems to be no re-usable Rust crate for this. But we already have everything here, just needs a small refactor to make it fully re-usable. - Mostly decouple the solc JSON-input-output interface types from the `solidity` frontend crate - Expose the JSON-input-output interface types in a dedicated crate --------- Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
//! `resolc` custom compiler warnings.
|
||||
//!
|
||||
//! The revive compiler adds warnings only applicable when compilng
|
||||
//! to the revive stack on Polkadot to the output.
|
||||
|
||||
use std::str::FromStr;
|
||||
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
// The `resolc` custom compiler warning.
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum Warning {
|
||||
EcRecover,
|
||||
SendTransfer,
|
||||
ExtCodeSize,
|
||||
TxOrigin,
|
||||
BlockTimestamp,
|
||||
BlockNumber,
|
||||
BlockHash,
|
||||
}
|
||||
|
||||
impl Warning {
|
||||
/// Converts string arguments into an array of warnings.
|
||||
pub fn try_from_strings(strings: &[String]) -> Result<Vec<Self>, anyhow::Error> {
|
||||
strings
|
||||
.iter()
|
||||
.map(|string| Self::from_str(string))
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Warning {
|
||||
type Err = anyhow::Error;
|
||||
|
||||
fn from_str(string: &str) -> Result<Self, Self::Err> {
|
||||
match string {
|
||||
"ecrecover" => Ok(Self::EcRecover),
|
||||
"sendtransfer" => Ok(Self::SendTransfer),
|
||||
"extcodesize" => Ok(Self::ExtCodeSize),
|
||||
"txorigin" => Ok(Self::TxOrigin),
|
||||
"blocktimestamp" => Ok(Self::BlockTimestamp),
|
||||
"blocknumber" => Ok(Self::BlockNumber),
|
||||
"blockhash" => Ok(Self::BlockHash),
|
||||
_ => Err(anyhow::anyhow!("Invalid warning: {}", string)),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user