git.delta.rocks / unique-network / refs/commits / 50d005ef0b3c

difftreelog

refactor(evm-coder) fancier selector doccomment

Yaroslav Bolyukin2022-07-12parent: #4e01cb3.patch.diff
in: master
Make it closer to format used in standards

2 files changed

modifiedcrates/evm-coder-macros/src/solidity_interface.rsdiffbeforeafterboth
765 .filter(|a| !a.is_special())765 .filter(|a| !a.is_special())
766 .map(MethodArg::expand_solidity_argument);766 .map(MethodArg::expand_solidity_argument);
767 let docs = self.docs.iter();767 let docs = self.docs.iter();
768 let selector_str = &self.selector_str;
768 let selector = format!("{} {:0>8x}", self.selector_str, self.selector);769 let selector = self.selector;
769770
770 quote! {771 quote! {
771 SolidityFunction {772 SolidityFunction {
772 docs: &[#(#docs),*],773 docs: &[#(#docs),*],
774 selector_str: #selector_str,
773 selector: #selector,775 selector: #selector,
774 name: #camel_name,776 name: #camel_name,
775 mutability: #mutability,777 mutability: #mutability,
modifiedcrates/evm-coder/src/solidity.rsdiffbeforeafterboth
--- a/crates/evm-coder/src/solidity.rs
+++ b/crates/evm-coder/src/solidity.rs
@@ -402,7 +402,8 @@
 }
 pub struct SolidityFunction<A, R> {
 	pub docs: &'static [&'static str],
-	pub selector: &'static str,
+	pub selector_str: &'static str,
+	pub selector: u32,
 	pub name: &'static str,
 	pub args: A,
 	pub result: R,
@@ -421,7 +422,8 @@
 		if !self.docs.is_empty() {
 			writeln!(writer, "\t///")?;
 		}
-		writeln!(writer, "\t/// Selector: {}", self.selector)?;
+		writeln!(writer, "\t/// @dev EVM selector for this function is: 0x{:0>8x},", self.selector)?;
+		writeln!(writer, "\t///  or in textual repr: {}", self.selector_str)?;
 		write!(writer, "\tfunction {}(", self.name)?;
 		self.args.solidity_name(writer, tc)?;
 		write!(writer, ")")?;