From 90b12dae5069441e3db846a8356ff385a431e80f Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Fri, 28 Oct 2022 12:59:37 +0000 Subject: [PATCH] misk: Remove some warnings. Add over_max_size test --- --- a/Cargo.lock +++ b/Cargo.lock @@ -2347,6 +2347,7 @@ "sha3-const", "similar-asserts", "sp-std", + "trybuild", ] [[package]] @@ -12671,6 +12672,21 @@ ] [[package]] +name = "trybuild" +version = "1.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea496675d71016e9bc76aa42d87f16aefd95447cc5818e671e12b2d7e269075d" +dependencies = [ + "glob", + "once_cell", + "serde", + "serde_derive", + "serde_json", + "termcolor", + "toml", +] + +[[package]] name = "tt-call" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" --- a/crates/evm-coder/Cargo.toml +++ b/crates/evm-coder/Cargo.toml @@ -29,6 +29,7 @@ hex-literal = "0.3.4" similar-asserts = "1.4.2" concat-idents = "1.1.3" +trybuild = "1.0" [features] default = ["std"] --- a/crates/evm-coder/src/custom_signature.rs +++ b/crates/evm-coder/src/custom_signature.rs @@ -423,15 +423,6 @@ assert_eq!(::name(), "!".repeat(SIGNATURE_SIZE_LIMIT)); } - // This test must NOT compile with "index out of bounds"! - // #[test] - // fn over_max_size() { - // assert_eq!( - // >::name(), - // "!".repeat(SIGNATURE_SIZE_LIMIT) + "[]" - // ); - // } - #[test] fn make_func_without_args() { const SIG: FunctionSignature = make_signature!( @@ -498,4 +489,10 @@ fn shift() { assert_eq!(<(u32,)>::name(), "(uint32)"); } + + #[test] + fn over_max_size() { + let t = trybuild::TestCases::new(); + t.compile_fail("tests/build_failed/custom_signature_over_max_size.rs"); + } } --- /dev/null +++ b/crates/evm-coder/tests/build_failed/custom_signature_over_max_size.rs @@ -0,0 +1,33 @@ +#![allow(dead_code)] +use std::str::from_utf8; + +use evm_coder::{ + make_signature, + custom_signature::{SignatureUnit, SIGNATURE_SIZE_LIMIT}, +}; + +trait Name { + const SIGNATURE: SignatureUnit; + + fn name() -> &'static str { + from_utf8(&Self::SIGNATURE.data[..Self::SIGNATURE.len]).expect("bad utf-8") + } +} + +impl Name for Vec { + evm_coder::make_signature!(new nameof(T) fixed("[]")); +} + +struct MaxSize(); +impl Name for MaxSize { + const SIGNATURE: SignatureUnit = SignatureUnit { + data: [b'!'; SIGNATURE_SIZE_LIMIT], + len: SIGNATURE_SIZE_LIMIT, + }; +} + +const NAME: SignatureUnit = >::SIGNATURE; + +fn main() { + assert!(false); +} --- /dev/null +++ b/crates/evm-coder/tests/build_failed/custom_signature_over_max_size.stderr @@ -0,0 +1,19 @@ +error: any use of this value will cause an error + --> tests/build_failed/custom_signature_over_max_size.rs:18:2 + | +18 | evm_coder::make_signature!(new nameof(T) fixed("[]")); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ index out of bounds: the length is 256 but the index is 256 + | + = note: `#[deny(const_err)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #71800 + = note: this error originates in the macro `make_signature` which comes from the expansion of the macro `evm_coder::make_signature` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: any use of this value will cause an error + --> tests/build_failed/custom_signature_over_max_size.rs:29:29 + | +29 | const NAME: SignatureUnit = >::SIGNATURE; + | ------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #71800 --- a/pallets/common/src/erc.rs +++ b/pallets/common/src/erc.rs @@ -35,10 +35,7 @@ use crate::{ Pallet, CollectionHandle, Config, CollectionProperties, SelfWeightOf, - eth::{ - convert_cross_account_to_uint256, convert_cross_account_to_tuple, - convert_tuple_to_cross_account, - }, + eth::{convert_cross_account_to_uint256, convert_tuple_to_cross_account}, weights::WeightInfo, }; --- a/pallets/evm-contract-helpers/src/eth.rs +++ b/pallets/evm-contract-helpers/src/eth.rs @@ -17,7 +17,6 @@ //! Implementation of magic contract extern crate alloc; -use alloc::string::ToString; use core::marker::PhantomData; use evm_coder::{ abi::AbiWriter, --- a/pallets/fungible/src/erc.rs +++ b/pallets/fungible/src/erc.rs @@ -28,7 +28,6 @@ custom_signature::{SignatureUnit, FunctionSignature, SignaturePreferences}, make_signature, }; -use pallet_common::eth::convert_tuple_to_cross_account; use up_data_structs::CollectionMode; use pallet_common::erc::{CommonEvmHandler, PrecompileResult}; use sp_std::vec::Vec; --- a/pallets/refungible/src/erc.rs +++ b/pallets/refungible/src/erc.rs @@ -21,7 +21,6 @@ extern crate alloc; -use alloc::string::ToString; use core::{ char::{REPLACEMENT_CHARACTER, decode_utf16}, convert::TryInto, @@ -39,7 +38,6 @@ use pallet_common::{ CollectionHandle, CollectionPropertyPermissions, erc::{CommonEvmHandler, CollectionCall, static_property::key}, - eth::convert_tuple_to_cross_account, }; use pallet_evm::{account::CrossAccountId, PrecompileHandle}; use pallet_evm_coder_substrate::{call, dispatch_to_evm}; --- a/pallets/unique/src/eth/mod.rs +++ b/pallets/unique/src/eth/mod.rs @@ -42,10 +42,7 @@ CreateCollectionData, }; -use crate::{ - weights::WeightInfo, Config, SelfWeightOf, NftTransferBasket, FungibleTransferBasket, - ReFungibleTransferBasket, NftApproveBasket, FungibleApproveBasket, RefungibleApproveBasket, -}; +use crate::{weights::WeightInfo, Config, SelfWeightOf}; use alloc::format; use sp_std::vec::Vec; --- a/runtime/common/config/pallets/scheduler.rs +++ b/runtime/common/config/pallets/scheduler.rs @@ -25,7 +25,7 @@ use codec::Decode; use crate::{ runtime_common::{scheduler::SchedulerPaymentExecutor, config::substrate::RuntimeBlockWeights}, - Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, OriginCaller, Balances, + Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, OriginCaller, }; use pallet_unique_scheduler_v2::ScheduledEnsureOriginSuccess; use up_common::types::AccountId; --- a/runtime/common/scheduler.rs +++ b/runtime/common/scheduler.rs @@ -14,19 +14,16 @@ // You should have received a copy of the GNU General Public License // along with Unique Network. If not, see . -use frame_support::{ - traits::NamedReservableCurrency, - dispatch::{GetDispatchInfo, PostDispatchInfo, DispatchInfo}, -}; +use frame_support::dispatch::{GetDispatchInfo, PostDispatchInfo, DispatchInfo}; use sp_runtime::{ traits::{Dispatchable, Applyable, Member}, generic::Era, transaction_validity::TransactionValidityError, - DispatchErrorWithPostInfo, DispatchError, + DispatchErrorWithPostInfo, }; use codec::Encode; -use crate::{Runtime, RuntimeCall, RuntimeOrigin, Balances}; -use up_common::types::{AccountId, Balance}; +use crate::{Runtime, RuntimeCall, RuntimeOrigin}; +use up_common::types::AccountId; use fp_self_contained::SelfContainedCall; use pallet_unique_scheduler_v2::DispatchCall; use pallet_transaction_payment::ChargeTransactionPayment; -- gitstuff