mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-07-29 04:25:39 +00:00
497dae2494
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>
49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
//! `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)),
|
|
}
|
|
}
|
|
}
|