difftreelog
feat(evm-coder) apply interface docs to generated call
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
crates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth627 .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;630631631 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;770773936 .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);938941939 let docs = self.docs.iter();942 let docs = &self.docs;940943941 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() {964967965 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 method968 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 #consts979 )*984 )*985 /// Return this call ERC165 selector980 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 selector986 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 interface995 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;