git.delta.rocks / unique-network / refs/commits / f0dde168a42b

difftreelog

feat(evm-coder) parse #[doc] for interface types

Yaroslav Bolyukin2022-07-12parent: #7d5b680.patch.diff
in: master
Previously, only documentation on items was parsed and preserved in
generated code, now you can have documentation on interface itself

10 files changed

modifiedCargo.lockdiffbeforeafterboth
2172version = "0.1.1"2172version = "0.1.1"
2173dependencies = [2173dependencies = [
2174 "ethereum",2174 "ethereum",
2175 "evm-coder-macros",2175 "evm-coder-procedural",
2176 "evm-core",2176 "evm-core",
2177 "hex",2177 "hex",
2178 "hex-literal",2178 "hex-literal",
2181]2181]
21822182
2183[[package]]2183[[package]]
2184name = "evm-coder-macros"2184name = "evm-coder-procedural"
2185version = "0.2.0"2185version = "0.2.0"
2186dependencies = [2186dependencies = [
2187 "Inflector",2187 "Inflector",
deletedcrates/evm-coder-macros/Cargo.tomldiffbeforeafterboth

no changes

deletedcrates/evm-coder-macros/src/lib.rsdiffbeforeafterboth

no changes

deletedcrates/evm-coder-macros/src/solidity_interface.rsdiffbeforeafterboth

no changes

deletedcrates/evm-coder-macros/src/to_log.rsdiffbeforeafterboth

no changes

addedcrates/evm-coder/procedural/Cargo.tomldiffbeforeafterboth

no changes

addedcrates/evm-coder/procedural/src/lib.rsdiffbeforeafterboth

no changes

addedcrates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth

no changes

addedcrates/evm-coder/procedural/src/to_log.rsdiffbeforeafterboth

no changes

modifiedcrates/evm-coder/src/solidity.rsdiffbeforeafterboth
427 for doc in self.docs {427 for doc in self.docs {
428 writeln!(writer, "\t///{}", doc)?;428 writeln!(writer, "\t///{}", doc)?;
429 }429 }
430 if !self.docs.is_empty() {
431 writeln!(writer, "\t///")?;
432 }
433 writeln!(writer, "\t/// @dev EVM selector for this function is: 0x{:0>8x},", self.selector)?;430 writeln!(writer, "\t/// @dev EVM selector for this function is: 0x{:0>8x},", self.selector)?;
434 writeln!(writer, "\t/// or in textual repr: {}", self.selector_str)?;431 writeln!(writer, "\t/// or in textual repr: {}", self.selector_str)?;
435 write!(writer, "\tfunction {}(", self.name)?;432 write!(writer, "\tfunction {}(", self.name)?;
491}488}
492489
493pub struct SolidityInterface<F: SolidityFunctions> {490pub struct SolidityInterface<F: SolidityFunctions> {
491 pub docs: &'static [&'static str],
494 pub selector: bytes4,492 pub selector: bytes4,
495 pub name: &'static str,493 pub name: &'static str,
496 pub is: &'static [&'static str],494 pub is: &'static [&'static str],
505 tc: &TypeCollector,503 tc: &TypeCollector,
506 ) -> fmt::Result {504 ) -> fmt::Result {
507 const ZERO_BYTES: [u8; 4] = [0; 4];505 const ZERO_BYTES: [u8; 4] = [0; 4];
506 for doc in self.docs {
507 writeln!(out, "///{}", doc)?;
508 }
508 if self.selector != ZERO_BYTES {509 if self.selector != ZERO_BYTES {
509 writeln!(510 writeln!(
510 out,511 out,