mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-06-14 21:31:05 +00:00
94ec34c4d5
Separate between compilation and linker phases to allow deploy time linking and back-porting era compiler changes to fix #91. Unlinked contract binaries (caused by missing libraries or missing factory dependencies in turn) are emitted as raw ELF object. Few drive by fixes: - #98 - A compiler panic on missing libraries definitions. - Fixes some incosistent type forwarding in JSON output (empty string vs. null object). - Remove the unused fallback for size optimization setting. - Remove the broken `--lvm-ir` mode. - CI workflow fixes. --------- Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com> Signed-off-by: xermicus <bigcyrill@hotmail.com> Signed-off-by: xermicus <cyrill@parity.io>
34 lines
1008 B
Rust
34 lines
1008 B
Rust
//! The contract identifier helper library.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// This structure simplifies passing the contract identifiers through the compilation pipeline.
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ContractIdentifier {
|
|
/// The absolute file path.
|
|
pub path: String,
|
|
/// The contract name.
|
|
/// Is set for Solidity contracts only. Otherwise it would be equal to the file name.
|
|
pub name: Option<String>,
|
|
/// The full contract identifier.
|
|
/// For Solidity, The format is `<absolute file path>:<contract name>`.
|
|
/// For other languages, `<absolute file path>`.
|
|
pub full_path: String,
|
|
}
|
|
|
|
impl ContractIdentifier {
|
|
/// A shortcut constructor.
|
|
pub fn new(path: String, name: Option<String>) -> Self {
|
|
let full_path = match name {
|
|
Some(ref name) => format!("{path}:{name}"),
|
|
None => path.clone(),
|
|
};
|
|
|
|
Self {
|
|
path,
|
|
name,
|
|
full_path,
|
|
}
|
|
}
|
|
}
|