--- a/.maintain/frame-weight-template.hbs +++ b/.maintain/frame-weight-template.hbs @@ -14,6 +14,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; --- a/Makefile +++ b/Makefile @@ -57,9 +57,5 @@ bench-nonfungible: make _bench PALLET=nonfungible -.PHONY: bench-evm-coder-substrate -bench-evm-coder-substrate: - make _bench PALLET=evm-coder-substrate - .PHONY: bench -bench: bench-evm-migration bench-nft bench-fungible bench-refungible bench-nonfungible bench-evm-coder-substrate +bench: bench-evm-migration bench-nft bench-fungible bench-refungible bench-nonfungible --- a/crates/evm-coder-macros/src/solidity_interface.rs +++ b/crates/evm-coder-macros/src/solidity_interface.rs @@ -226,16 +226,10 @@ } } fn is_value(&self) -> bool { - match self { - Self::Plain(v) if v == "value" => true, - _ => false, - } + matches!(self, Self::Plain(v) if v == "value") } fn is_caller(&self) -> bool { - match self { - Self::Plain(v) if v == "caller" => true, - _ => false, - } + matches!(self, Self::Plain(v) if v == "caller") } fn is_special(&self) -> bool { self.is_caller() || self.is_value() @@ -599,7 +593,7 @@ #args, )* )?; - (&result).into_result() + (&result).to_result() } } } --- a/crates/evm-coder/src/abi.rs +++ b/crates/evm-coder/src/abi.rs @@ -310,7 +310,7 @@ pub trait AbiWrite { fn abi_write(&self, writer: &mut AbiWriter); - fn into_result(&self) -> ResultWithPostInfo { + fn to_result(&self) -> ResultWithPostInfo { let mut writer = AbiWriter::new(); self.abi_write(&mut writer); Ok(writer.into()) @@ -319,7 +319,7 @@ impl AbiWrite for ResultWithPostInfo { // this particular AbiWrite implementation should be split to another trait, - // which only implements [`into_result`] + // which only implements [`to_result`] // // But due to lack of specialization feature in stable Rust, we can't have // blanket impl of this trait `for T where T: AbiWrite`, so here we abusing @@ -327,7 +327,7 @@ fn abi_write(&self, _writer: &mut AbiWriter) { debug_assert!(false, "shouldn't be called, see comment") } - fn into_result(&self) -> ResultWithPostInfo { + fn to_result(&self) -> ResultWithPostInfo { match self { Ok(v) => Ok(WithPostDispatchInfo { post_info: v.post_info.clone(), --- a/node/rpc/src/lib.rs +++ b/node/rpc/src/lib.rs @@ -214,7 +214,7 @@ 500_usize, // max stored filters overrides.clone(), max_past_logs, - block_data_cache.clone(), + block_data_cache, ))); } --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -51,7 +51,7 @@ Self::new_with_gas_limit(id, u64::MAX) } pub fn try_get(id: CollectionId) -> Result { - Ok(Self::new(id).ok_or_else(|| >::CollectionNotFound)?) + Ok(Self::new(id).ok_or(>::CollectionNotFound)?) } pub fn log(&self, log: impl evm_coder::ToLog) { self.recorder.log(log) @@ -453,7 +453,7 @@ collection.limits.owner_can_destroy(), >::NoPermission, ); - collection.check_is_owner(&sender)?; + collection.check_is_owner(sender)?; let destroyed_collections = >::get() .0 @@ -476,7 +476,7 @@ user: &T::CrossAccountId, allowed: bool, ) -> DispatchResult { - collection.check_is_owner_or_admin(&sender)?; + collection.check_is_owner_or_admin(sender)?; // ========= @@ -495,7 +495,7 @@ user: &T::CrossAccountId, admin: bool, ) -> DispatchResult { - collection.check_is_owner_or_admin(&sender)?; + collection.check_is_owner_or_admin(sender)?; let was_admin = >::get((collection.id, user)); if was_admin == admin { --- a/pallets/evm-contract-helpers/exp.rs +++ b/pallets/evm-contract-helpers/exp.rs @@ -532,11 +532,11 @@ match c.call { InternalCall::ContractOwner { contract_address } => { let result = self.contract_owner(contract_address)?; - (&result).into_result() + (&result).to_result() } InternalCall::SponsoringEnabled { contract_address } => { let result = self.sponsoring_enabled(contract_address)?; - (&result).into_result() + (&result).to_result() } InternalCall::ToggleSponsoring { contract_address, @@ -544,7 +544,7 @@ } => { let result = self.toggle_sponsoring(c.caller.clone(), contract_address, enabled)?; - (&result).into_result() + (&result).to_result() } InternalCall::SetSponsoringRateLimit { contract_address, @@ -555,22 +555,22 @@ contract_address, rate_limit, )?; - (&result).into_result() + (&result).to_result() } InternalCall::GetSponsoringRateLimit { contract_address } => { let result = self.get_sponsoring_rate_limit(contract_address)?; - (&result).into_result() + (&result).to_result() } InternalCall::Allowed { contract_address, user, } => { let result = self.allowed(contract_address, user)?; - (&result).into_result() + (&result).to_result() } InternalCall::AllowlistEnabled { contract_address } => { let result = self.allowlist_enabled(contract_address)?; - (&result).into_result() + (&result).to_result() } InternalCall::ToggleAllowlist { contract_address, @@ -578,7 +578,7 @@ } => { let result = self.toggle_allowlist(c.caller.clone(), contract_address, enabled)?; - (&result).into_result() + (&result).to_result() } InternalCall::ToggleAllowed { contract_address, @@ -587,7 +587,7 @@ } => { let result = self.toggle_allowed(c.caller.clone(), contract_address, user, allowed)?; - (&result).into_result() + (&result).to_result() } _ => ::core::panicking::panic("internal error: entered unreachable code"), } --- a/pallets/evm-contract-helpers/src/eth.rs +++ b/pallets/evm-contract-helpers/src/eth.rs @@ -1,10 +1,7 @@ use core::marker::PhantomData; use evm_coder::{abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*}; use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder}; -use pallet_evm::{ - ExitReason, ExitRevert, OnCreate, OnMethodCall, PrecompileOutput, PrecompileResult, - PrecompileFailure, -}; +use pallet_evm::{ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure}; use sp_core::H160; use crate::{ AllowlistEnabled, Config, Owner, Pallet, SelfSponsoring, SponsorBasket, SponsoringRateLimit, @@ -161,7 +158,7 @@ if let Some(last_tx_block) = >::get(&call.0, who) { let limit = >::get(&call.0); - let timeout = last_tx_block + limit.into(); + let timeout = last_tx_block + limit; if block_number < timeout { return None; } --- a/pallets/evm-migration/src/weights.rs +++ b/pallets/evm-migration/src/weights.rs @@ -25,6 +25,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; --- a/pallets/evm-transaction-payment/src/lib.rs +++ b/pallets/evm-transaction-payment/src/lib.rs @@ -128,7 +128,7 @@ let sponsor = frame_support::storage::with_transaction(|| { TransactionOutcome::Rollback(T::EvmSponsorshipHandler::get_sponsor( &who, - &(target.clone(), input.clone()), + &(*target, input.clone()), )) })?; let sponsor = T::EvmAddressMapping::into_account_id(sponsor); --- a/pallets/fungible/src/common.rs +++ b/pallets/fungible/src/common.rs @@ -116,7 +116,7 @@ ); with_weight( - >::transfer(&self, &from, &to, amount), + >::transfer(self, &from, &to, amount), >::transfer(), ) } @@ -134,7 +134,7 @@ ); with_weight( - >::set_allowance(&self, &sender, &spender, amount), + >::set_allowance(self, &sender, &spender, amount), >::approve(), ) } @@ -153,7 +153,7 @@ ); with_weight( - >::transfer_from(&self, &sender, &from, &to, amount), + >::transfer_from(self, &sender, &from, &to, amount), >::transfer_from(), ) } @@ -171,7 +171,7 @@ ); with_weight( - >::burn_from(&self, &sender, &from, amount), + >::burn_from(self, &sender, &from, amount), >::burn_from(), ) } --- a/pallets/fungible/src/erc.rs +++ b/pallets/fungible/src/erc.rs @@ -6,7 +6,6 @@ use sp_core::{H160, U256}; use sp_std::vec::Vec; use pallet_common::account::CrossAccountId; -use pallet_common::erc::PrecompileOutput; use pallet_evm_coder_substrate::{call, dispatch_to_evm}; use crate::{ --- a/pallets/fungible/src/lib.rs +++ b/pallets/fungible/src/lib.rs @@ -303,8 +303,8 @@ amount: u128, ) -> DispatchResult { if collection.access == AccessMode::AllowList { - collection.check_allowlist(&owner)?; - collection.check_allowlist(&spender)?; + collection.check_allowlist(owner)?; + collection.check_allowlist(spender)?; } if >::get((collection.id, owner)) < amount { --- a/pallets/fungible/src/weights.rs +++ b/pallets/fungible/src/weights.rs @@ -25,6 +25,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; @@ -32,11 +33,11 @@ /// Weight functions needed for pallet_fungible. pub trait WeightInfo { fn create_item() -> Weight; - fn burn_from() -> Weight; fn burn_item() -> Weight; fn transfer() -> Weight; fn approve() -> Weight; fn transfer_from() -> Weight; + fn burn_from() -> Weight; } /// Weights for pallet_fungible using the Substrate node and recommended hardware. --- a/pallets/nft/src/benchmarking.rs +++ b/pallets/nft/src/benchmarking.rs @@ -158,6 +158,7 @@ sponsored_data_size: Some(0), token_limit: Some(1), sponsor_transfer_timeout: Some(0), + sponsor_approve_timeout: None, owner_can_destroy: Some(true), owner_can_transfer: Some(true), sponsored_data_rate_limit: None, --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -195,7 +195,7 @@ // Create new collection let new_collection = Collection { - owner: who.clone(), + owner: who, name: collection_name, mode: mode.clone(), mint_mode: false, --- a/pallets/nft/src/weights.rs +++ b/pallets/nft/src/weights.rs @@ -25,6 +25,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -100,7 +100,7 @@ ensure!(amount <= 1, >::NonfungibleItemsHaveNoAmount); if amount == 1 { with_weight( - >::burn(&self, &sender, token), + >::burn(self, &sender, token), >::burn_item(), ) } else { @@ -118,7 +118,7 @@ ensure!(amount <= 1, >::NonfungibleItemsHaveNoAmount); if amount == 1 { with_weight( - >::transfer(&self, &from, &to, token), + >::transfer(self, &from, &to, token), >::transfer(), ) } else { @@ -137,9 +137,9 @@ with_weight( if amount == 1 { - >::set_allowance(&self, &sender, token, Some(&spender)) + >::set_allowance(self, &sender, token, Some(&spender)) } else { - >::set_allowance(&self, &sender, token, None) + >::set_allowance(self, &sender, token, None) }, >::approve(), ) @@ -157,7 +157,7 @@ if amount == 1 { with_weight( - >::transfer_from(&self, &sender, &from, &to, token), + >::transfer_from(self, &sender, &from, &to, token), >::transfer_from(), ) } else { @@ -176,7 +176,7 @@ if amount == 1 { with_weight( - >::burn_from(&self, &sender, &from, token), + >::burn_from(self, &sender, &from, token), >::burn_from(), ) } else { @@ -192,7 +192,7 @@ ) -> DispatchResultWithPostInfo { let len = data.len(); with_weight( - >::set_variable_metadata(&self, &sender, token, data), + >::set_variable_metadata(self, &sender, token, data), >::set_variable_metadata(len as u32), ) } @@ -218,12 +218,12 @@ } fn const_metadata(&self, token: TokenId) -> Vec { >::get((self.id, token)) - .map(|t| t.const_data.clone()) + .map(|t| t.const_data) .unwrap_or_default() } fn variable_metadata(&self, token: TokenId) -> Vec { >::get((self.id, token)) - .map(|t| t.variable_data.clone()) + .map(|t| t.variable_data) .unwrap_or_default() } --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -13,7 +13,6 @@ erc::{CommonEvmHandler, PrecompileResult}, }; use pallet_evm_coder_substrate::call; -use pallet_common::erc::PrecompileOutput; use crate::{ AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted, --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -169,8 +169,8 @@ sender: &T::CrossAccountId, token: TokenId, ) -> DispatchResult { - let token_data = >::get((collection.id, token)) - .ok_or_else(|| >::TokenNotFound)?; + let token_data = + >::get((collection.id, token)).ok_or(>::TokenNotFound)?; ensure!( &token_data.owner == sender || (collection.limits.owner_can_transfer() && collection.is_owner_or_admin(sender)), @@ -197,7 +197,7 @@ collection.id, token, sender.clone(), - old_spender.clone(), + old_spender, 0, )); } @@ -213,7 +213,7 @@ token_data.owner, 1, )); - return Ok(()); + Ok(()) } pub fn transfer( @@ -227,8 +227,8 @@ >::TransferNotAllowed ); - let token_data = >::get((collection.id, token)) - .ok_or_else(|| >::TokenNotFound)?; + let token_data = + >::get((collection.id, token)).ok_or(>::TokenNotFound)?; ensure!( &token_data.owner == from || (collection.limits.owner_can_transfer() && collection.is_owner_or_admin(from)), @@ -399,7 +399,7 @@ collection.id, token, sender.clone(), - old_owner.clone(), + old_owner, 0, )); } @@ -429,7 +429,7 @@ collection.id, token, sender.clone(), - old_spender.clone(), + old_spender, 0, )); } @@ -443,9 +443,9 @@ spender: Option<&T::CrossAccountId>, ) -> DispatchResult { if collection.access == AccessMode::AllowList { - collection.check_allowlist(&sender)?; + collection.check_allowlist(sender)?; if let Some(spender) = spender { - collection.check_allowlist(&spender)?; + collection.check_allowlist(spender)?; } } @@ -491,7 +491,7 @@ // ========= - Self::transfer(collection, &from, to, token)?; + Self::transfer(collection, from, to, token)?; // Allowance is reset in [`transfer`] Ok(()) } @@ -519,7 +519,7 @@ // ========= - Self::burn(collection, &from, token) + Self::burn(collection, from, token) } pub fn set_variable_metadata( --- a/pallets/nonfungible/src/weights.rs +++ b/pallets/nonfungible/src/weights.rs @@ -25,6 +25,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; @@ -33,11 +34,11 @@ pub trait WeightInfo { fn create_item() -> Weight; fn create_multiple_items(b: u32, ) -> Weight; - fn burn_from() -> Weight; fn burn_item() -> Weight; fn transfer() -> Weight; fn approve() -> Weight; fn transfer_from() -> Weight; + fn burn_from() -> Weight; fn set_variable_metadata(b: u32, ) -> Weight; } --- a/pallets/refungible/src/common.rs +++ b/pallets/refungible/src/common.rs @@ -135,7 +135,7 @@ amount: u128, ) -> DispatchResultWithPostInfo { with_weight( - >::transfer(&self, &from, &to, token, amount), + >::transfer(self, &from, &to, token, amount), >::transfer(), ) } @@ -148,7 +148,7 @@ amount: u128, ) -> DispatchResultWithPostInfo { with_weight( - >::set_allowance(&self, &sender, &spender, token, amount), + >::set_allowance(self, &sender, &spender, token, amount), >::approve(), ) } @@ -162,7 +162,7 @@ amount: u128, ) -> DispatchResultWithPostInfo { with_weight( - >::transfer_from(&self, &sender, &from, &to, token, amount), + >::transfer_from(self, &sender, &from, &to, token, amount), >::transfer_from(), ) } @@ -175,7 +175,7 @@ amount: u128, ) -> DispatchResultWithPostInfo { with_weight( - >::burn_from(&self, &sender, &from, token, amount), + >::burn_from(self, &sender, &from, token, amount), >::burn_from(), ) } @@ -188,7 +188,7 @@ ) -> DispatchResultWithPostInfo { let len = data.len(); with_weight( - >::set_variable_metadata(&self, &sender, token, data), + >::set_variable_metadata(self, &sender, token, data), >::set_variable_metadata(len as u32), ) } --- a/pallets/refungible/src/lib.rs +++ b/pallets/refungible/src/lib.rs @@ -189,7 +189,7 @@ >::remove_prefix((collection.id, token_id), None); >::remove_prefix((collection.id, token_id), None); // TODO: ERC721 transfer event - return Ok(()); + Ok(()) } pub fn burn( @@ -367,8 +367,8 @@ collection.check_allowlist(sender)?; for item in data.iter() { - for (user, _) in &item.users { - collection.check_allowlist(&user)?; + for user in item.users.keys() { + collection.check_allowlist(user)?; } } } @@ -409,7 +409,7 @@ let mut balances = BTreeMap::new(); for data in &data { - for (owner, _) in &data.users { + for owner in data.users.keys() { let balance = balances .entry(owner) .or_insert_with(|| >::get((collection.id, owner))); @@ -483,8 +483,8 @@ amount: u128, ) -> DispatchResult { if collection.access == AccessMode::AllowList { - collection.check_allowlist(&sender)?; - collection.check_allowlist(&spender)?; + collection.check_allowlist(sender)?; + collection.check_allowlist(spender)?; } >::ensure_correct_receiver(spender)?; --- a/pallets/refungible/src/weights.rs +++ b/pallets/refungible/src/weights.rs @@ -25,6 +25,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +#![allow(clippy::unnecessary_cast)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; @@ -33,7 +34,6 @@ pub trait WeightInfo { fn create_item() -> Weight; fn create_multiple_items(b: u32, ) -> Weight; - fn burn_from() -> Weight; fn burn_item_partial() -> Weight; fn burn_item_fully() -> Weight; fn transfer_normal() -> Weight; @@ -45,6 +45,7 @@ fn transfer_from_creating() -> Weight; fn transfer_from_removing() -> Weight; fn transfer_from_creating_removing() -> Weight; + fn burn_from() -> Weight; fn set_variable_metadata(b: u32, ) -> Weight; } --- a/primitives/nft/src/lib.rs +++ b/primitives/nft/src/lib.rs @@ -327,8 +327,7 @@ D: ser::Serializer, V: Serialize, { - let vec: &Vec<_> = &value; - vec.serialize(serializer) + (value as &Vec<_>).serialize(serializer) } pub fn deserialize<'de, D, V, S>(deserializer: D) -> Result, D::Error> --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -1177,6 +1177,7 @@ EVM::account_storages(address, H256::from_slice(&tmp[..])) } + #[allow(clippy::redundant_closure)] fn call( from: H160, to: H160, @@ -1207,6 +1208,7 @@ ).map_err(|err| err.into()) } + #[allow(clippy::redundant_closure)] fn create( from: H160, data: Vec,