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

difftreelog

feat(evm-coder) apply interface docs to generated call

Yaroslav Bolyukin2022-07-12parent: #4efa9ce.patch.diff
in: master
Previously, generated `Call` enum had no documentation, and
documentation on interface items was only kept in generated solidity
interfaces.

Now all documentation will be moved from impl items to generated `Call`
enum

1 file changed

modifiedcrates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth
627 .filter(|a| !a.is_special())627 .filter(|a| !a.is_special())
628 .map(|a| a.expand_call_def());628 .map(|a| a.expand_call_def());
629 let pascal_name = &self.pascal_name;629 let pascal_name = &self.pascal_name;
630 let docs = &self.docs;
630631
631 if self.has_normal_args {632 if self.has_normal_args {
632 quote! {633 quote! {
634 #(#[doc = #docs])*
635 #[allow(missing_docs)]
633 #pascal_name {636 #pascal_name {
634 #(637 #(
635 #defs,638 #defs,
764 .iter()767 .iter()
765 .filter(|a| !a.is_special())768 .filter(|a| !a.is_special())
766 .map(MethodArg::expand_solidity_argument);769 .map(MethodArg::expand_solidity_argument);
767 let docs = self.docs.iter();770 let docs = &self.docs;
768 let selector_str = &self.selector_str;771 let selector_str = &self.selector_str;
769 let selector = self.selector;772 let selector = self.selector;
770773
936 .map(|is| Is::expand_generator(is, &gen_ref));939 .map(|is| Is::expand_generator(is, &gen_ref));
937 let solidity_event_generators = self.info.events.0.iter().map(Is::expand_event_generator);940 let solidity_event_generators = self.info.events.0.iter().map(Is::expand_event_generator);
938941
939 let docs = self.docs.iter();942 let docs = &self.docs;
940943
941 if let Some(expect_selector) = &self.info.expect_selector {944 if let Some(expect_selector) = &self.info.expect_selector {
942 if !self.info.inline_is.0.is_empty() {945 if !self.info.inline_is.0.is_empty() {
964967
965 quote! {968 quote! {
966 #[derive(Debug)]969 #[derive(Debug)]
970 #(#[doc = #docs])*
967 pub enum #call_name #gen_ref {971 pub enum #call_name #gen_ref {
972 /// Inherited method
968 ERC165Call(::evm_coder::ERC165Call, ::core::marker::PhantomData<#gen_data>),973 ERC165Call(::evm_coder::ERC165Call, ::core::marker::PhantomData<#gen_data>),
969 #(974 #(
970 #calls,975 #calls,
977 #(982 #(
978 #consts983 #consts
979 )*984 )*
985 /// Return this call ERC165 selector
980 pub fn interface_id() -> ::evm_coder::types::bytes4 {986 pub fn interface_id() -> ::evm_coder::types::bytes4 {
981 let mut interface_id = 0;987 let mut interface_id = 0;
982 #(#interface_id)*988 #(#interface_id)*
983 #(#inline_interface_id)*989 #(#inline_interface_id)*
984 u32::to_be_bytes(interface_id)990 u32::to_be_bytes(interface_id)
985 }991 }
992 /// Is this contract implements specified ERC165 selector
986 pub fn supports_interface(interface_id: ::evm_coder::types::bytes4) -> bool {993 pub fn supports_interface(interface_id: ::evm_coder::types::bytes4) -> bool {
987 interface_id != u32::to_be_bytes(0xffffff) && (994 interface_id != u32::to_be_bytes(0xffffff) && (
988 interface_id == ::evm_coder::ERC165Call::INTERFACE_ID ||995 interface_id == ::evm_coder::ERC165Call::INTERFACE_ID ||
992 )*999 )*
993 )1000 )
994 }1001 }
1002 /// Generate solidity definitions for methods described in this interface
995 pub fn generate_solidity_interface(tc: &evm_coder::solidity::TypeCollector, is_impl: bool) {1003 pub fn generate_solidity_interface(tc: &evm_coder::solidity::TypeCollector, is_impl: bool) {
996 use evm_coder::solidity::*;1004 use evm_coder::solidity::*;
997 use core::fmt::Write;1005 use core::fmt::Write;