Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

migrate alliance, fast-unstake and bags list to use derive-impl #1636

Merged
merged 16 commits into from
Oct 1, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update
  • Loading branch information
kianenigma committed Sep 20, 2023
commit 97f953e16fea79c75489ce1aa0029fef10a4feda
19 changes: 12 additions & 7 deletions substrate/frame/balances/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ pub mod pallet {
/// Default implementations of [`DefaultConfig`], which can be used to implement [`Config`].
pub mod config_preludes {
use super::*;
use frame_support::derive_impl;
use frame_support::{derive_impl, traits::ConstU64};

pub struct TestDefaultConfig;

Expand All @@ -227,12 +227,17 @@ pub mod pallet {
impl DefaultConfig for TestDefaultConfig {
#[inject_runtime_type]
type RuntimeEvent = ();
#[inject_runtime_type]
type RuntimeHoldReason = ();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, when we have #[inject_runtime_type] here, does it actually mean that the RHS here can be anything we want, and it wouldn't matter?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can be any type (as long as it is a valid type identifier) and any type is valid because in DefaultConfig it is merely a type RuntimeHoldReason with no bounds.


type Balance = u64;
type ExistentialDeposit = ConstU64<1>;

type ReserveIdentifier = ();
type FreezeIdentifier = ();

type DustRemoval = ();

type MaxLocks = ();
type MaxReserves = ();
type MaxFreezes = ();
Expand All @@ -249,6 +254,10 @@ pub mod pallet {
type RuntimeEvent: From<Event<Self, I>>
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;

/// The overarching hold reason.
#[pallet::no_default_bounds]
type RuntimeHoldReason: Parameter + Member + MaxEncodedLen + Ord + Copy;

/// Weight information for extrinsics in this pallet.
type WeightInfo: WeightInfo;

Expand All @@ -266,7 +275,7 @@ pub mod pallet {
+ FixedPointOperand;

/// Handler for the unbalanced reduction when removing a dust account.
#[pallet::no_default]
#[pallet::no_default_bounds]
type DustRemoval: OnUnbalanced<CreditOf<Self, I>>;

/// The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO!
Expand All @@ -278,7 +287,7 @@ pub mod pallet {
///
/// Bottom line: Do yourself a favour and make it at least one!
#[pallet::constant]
#[pallet::no_default]
#[pallet::no_default_bounds]
type ExistentialDeposit: Get<Self::Balance>;

/// The means of storing the balances of an account.
Expand All @@ -290,10 +299,6 @@ pub mod pallet {
/// Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`
type ReserveIdentifier: Parameter + Member + MaxEncodedLen + Ord + Copy;

/// The overarching hold reason.
#[pallet::no_default]
type RuntimeHoldReason: Parameter + Member + MaxEncodedLen + Ord + Copy;

/// The ID type for freezes.
type FreezeIdentifier: Parameter + Member + MaxEncodedLen + Ord + Copy;

Expand Down
13 changes: 2 additions & 11 deletions substrate/frame/multisig/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,15 @@ frame_support::construct_runtime!(
impl frame_system::Config for Test {
type Block = Block;
type BlockHashCount = ConstU32<250>;
type RuntimeOrigin = RuntimeOrigin;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type BaseCallFilter = TestBaseCallFilter;
type PalletInfo = PalletInfo;
type OnSetCode = ();

type AccountData = pallet_balances::AccountData<u64>;
// This pallet wishes to overwrite this.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not aware tbh, but somehow in the test setu they wishes to on;y allow balances and remark transactions. Probably to test that any call filter here cannot be bipassed by being wrapped in a multisig.

type BaseCallFilter = TestBaseCallFilter;
}

#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig as pallet_balances::DefaultConfig)]
impl pallet_balances::Config for Test {
type RuntimeEvent = RuntimeEvent;
type RuntimeHoldReason = ();
type ReserveIdentifier = [u8; 8];
type DustRemoval = ();
type AccountStore = System;
type ExistentialDeposit = ConstU64<1>;
}

pub struct TestBaseCallFilter;
Expand Down
11 changes: 0 additions & 11 deletions substrate/frame/proxy/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,25 +45,14 @@ frame_support::construct_runtime!(
#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
impl frame_system::Config for Test {
type Block = Block;
type BlockHashCount = ConstU64<250>;
type RuntimeOrigin = RuntimeOrigin;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type PalletInfo = PalletInfo;
type OnSetCode = ();

type BaseCallFilter = BaseFilter;
type AccountData = pallet_balances::AccountData<u64>;
}

#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig as pallet_balances::DefaultConfig)]
impl pallet_balances::Config for Test {
type RuntimeEvent = RuntimeEvent;
type RuntimeHoldReason = ();
type ReserveIdentifier = [u8; 8];
type DustRemoval = ();
type AccountStore = System;
type ExistentialDeposit = ConstU64<1>;
}

impl pallet_utility::Config for Test {
Expand Down
2 changes: 2 additions & 0 deletions substrate/frame/support/procedural/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,8 @@ pub fn inject_runtime_type(_: TokenStream, tokens: TokenStream) -> TokenStream {
if item.ident != "RuntimeCall" &&
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd love to see docs on these macros

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs are available here:

pub use frame_support_procedural::inject_runtime_type;

item.ident != "RuntimeEvent" &&
item.ident != "RuntimeOrigin" &&
item.ident != "RuntimeHoldReason" &&
item.ident != "RuntimeFreezeReason" &&
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good to modify the error message as well.

item.ident != "PalletInfo"
{
return syn::Error::new_spanned(
Expand Down