--- a/crates/evm-coder/procedural/src/abi_derive.rs +++ b/crates/evm-coder/procedural/src/abi_derive.rs @@ -141,7 +141,7 @@ let abi_write = if is_named_fields { quote!( #( - self.#field_names.abi_write(sub); + ::evm_coder::abi::AbiWrite::abi_write(&self.#field_names, sub); )* ) } else { @@ -150,7 +150,7 @@ .map(proc_macro2::Literal::usize_unsuffixed); quote!( #( - self.#field_names.abi_write(sub); + ::evm_coder::abi::AbiWrite::abi_write(&self.#field_names, sub); )* ) }; --- a/crates/evm-coder/procedural/src/lib.rs +++ b/crates/evm-coder/procedural/src/lib.rs @@ -251,6 +251,5 @@ Ok(e) => e, Err(e) => e.to_compile_error(), }; - // println!("{}", &ts); ts.into() } --- a/crates/evm-coder/tests/abi_derive_generation.rs +++ b/crates/evm-coder/tests/abi_derive_generation.rs @@ -1,8 +1,5 @@ use evm_coder_procedural::AbiCoder; -use evm_coder::{ - types::*, - abi::{AbiType, AbiRead, AbiWrite, AbiReader, AbiWriter}, -}; +use evm_coder::types::bytes; // TODO: move to build_failed tests // #[derive(AbiCoder, PartialEq, Debug)] @@ -71,61 +68,61 @@ #[test] fn impl_abi_type_signature() { assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "(uint8)" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "(string)" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "(uint8,uint32)" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "(string,bytes)" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "(uint8,bytes)" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "((uint8))" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "((uint8),(uint8,uint32))" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "((string))" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "((string),(string,bytes))" ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), "((uint8),(string,bytes),(uint8,bytes))" @@ -134,68 +131,89 @@ #[test] fn impl_abi_type_is_dynamic() { - assert_eq!(::is_dynamic(), false); - assert_eq!(::is_dynamic(), true); - assert_eq!(::is_dynamic(), false); - assert_eq!(::is_dynamic(), true); - assert_eq!(::is_dynamic(), true); assert_eq!( - ::is_dynamic(), + ::is_dynamic(), false ); assert_eq!( - ::is_dynamic(), + ::is_dynamic(), + true + ); + assert_eq!( + ::is_dynamic(), false ); assert_eq!( - ::is_dynamic(), + ::is_dynamic(), true ); assert_eq!( - ::is_dynamic(), + ::is_dynamic(), true ); assert_eq!( - ::is_dynamic(), + ::is_dynamic(), + false + ); + assert_eq!( + ::is_dynamic(), + false + ); + assert_eq!( + ::is_dynamic(), true ); + assert_eq!( + ::is_dynamic(), + true + ); + assert_eq!( + ::is_dynamic(), + true + ); } #[test] fn impl_abi_type_size() { const ABI_ALIGNMENT: usize = 32; - assert_eq!(::size(), ABI_ALIGNMENT); - assert_eq!(::size(), ABI_ALIGNMENT); assert_eq!( - ::size(), + ::size(), + ABI_ALIGNMENT + ); + assert_eq!( + ::size(), + ABI_ALIGNMENT + ); + assert_eq!( + ::size(), ABI_ALIGNMENT * 2 ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT * 2 ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT * 2 ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT * 3 ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT * 3 ); assert_eq!( - ::size(), + ::size(), ABI_ALIGNMENT * 5 ); } @@ -237,82 +255,82 @@ #[test] fn impl_abi_type_signature_same_for_structs() { assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap() ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap() ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap() ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap() ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); assert_eq!( - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), - ::SIGNATURE + ::SIGNATURE .as_str() .unwrap(), ); @@ -321,88 +339,88 @@ #[test] fn impl_abi_type_is_dynamic_same_for_structs() { assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); assert_eq!( - ::is_dynamic(), - ::is_dynamic() + ::is_dynamic(), + ::is_dynamic() ); } #[test] fn impl_abi_type_size_same_for_structs() { assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); assert_eq!( - ::size(), - ::size() + ::size(), + ::size() ); } @@ -413,9 +431,12 @@ tuple_struct_data: TupleStruct, type_struct_data: TypeStruct, ) where - TypeStruct: AbiWrite + AbiRead + std::cmp::PartialEq + std::fmt::Debug, - TupleStruct: AbiWrite + AbiRead + std::cmp::PartialEq + std::fmt::Debug, - Tuple: AbiWrite + AbiRead + std::cmp::PartialEq + std::fmt::Debug, + TypeStruct: + evm_coder::abi::AbiWrite + evm_coder::abi::AbiRead + std::cmp::PartialEq + std::fmt::Debug, + TupleStruct: + evm_coder::abi::AbiWrite + evm_coder::abi::AbiRead + std::cmp::PartialEq + std::fmt::Debug, + Tuple: + evm_coder::abi::AbiWrite + evm_coder::abi::AbiRead + std::cmp::PartialEq + std::fmt::Debug, { let encoded_type_struct = test_abi_write_impl(&type_struct_data); let encoded_tuple_struct = test_abi_write_impl(&tuple_struct_data); @@ -423,29 +444,25 @@ similar_asserts::assert_eq!(encoded_tuple, encoded_type_struct); similar_asserts::assert_eq!(encoded_tuple, encoded_tuple_struct); - - // dbg!(&encoded_tuple); - // dbg!(&encoded_tuple_struct); - // dbg!(&encoded_type_struct); { - let (_, mut decoder) = AbiReader::new_call(&encoded_tuple).unwrap(); + let (_, mut decoder) = evm_coder::abi::AbiReader::new_call(&encoded_tuple).unwrap(); let restored_struct_data = ::abi_read(&mut decoder).unwrap(); assert_eq!(restored_struct_data, type_struct_data); } { - let (_, mut decoder) = AbiReader::new_call(&encoded_tuple).unwrap(); + let (_, mut decoder) = evm_coder::abi::AbiReader::new_call(&encoded_tuple).unwrap(); let restored_struct_data = ::abi_read(&mut decoder).unwrap(); assert_eq!(restored_struct_data, tuple_struct_data); } { - let (_, mut decoder) = AbiReader::new_call(&encoded_type_struct).unwrap(); + let (_, mut decoder) = evm_coder::abi::AbiReader::new_call(&encoded_type_struct).unwrap(); let restored_tuple_data = ::abi_read(&mut decoder).unwrap(); assert_eq!(restored_tuple_data, tuple_data); } { - let (_, mut decoder) = AbiReader::new_call(&encoded_tuple_struct).unwrap(); + let (_, mut decoder) = evm_coder::abi::AbiReader::new_call(&encoded_tuple_struct).unwrap(); let restored_tuple_data = ::abi_read(&mut decoder).unwrap(); assert_eq!(restored_tuple_data, tuple_data); } @@ -453,9 +470,9 @@ fn test_abi_write_impl(data: &A) -> Vec where - A: AbiWrite + AbiRead + std::cmp::PartialEq + std::fmt::Debug, + A: evm_coder::abi::AbiWrite + evm_coder::abi::AbiRead + std::cmp::PartialEq + std::fmt::Debug, { - let mut writer = AbiWriter::new_call(FUNCTION_IDENTIFIER); + let mut writer = evm_coder::abi::AbiWriter::new_call(FUNCTION_IDENTIFIER); data.abi_write(&mut writer); let encoded_tuple = writer.finish(); encoded_tuple @@ -464,7 +481,7 @@ #[test] fn codec_struct_1_simple() { let _a = 0xff; - test_impl::<(uint8,), TupleStruct1SimpleParam, TypeStruct1SimpleParam>( + test_impl::<(u8,), TupleStruct1SimpleParam, TypeStruct1SimpleParam>( (_a,), TupleStruct1SimpleParam(_a), TypeStruct1SimpleParam { _a },