mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 04:41:02 +00:00
Remove use of trait Store from all pallets and deprecate it. (#13535)
* Remove use of trait Store from staking pallet * Remove use of trait Store from bounties pallet * Remove use of trait Store from collective pallet * Remove use of trait Store from babe pallet * Remove use of trait Store from assets pallet * Remove use of trait Store from grandpa pallet * Remove use of trait Store from balances pallet * Remove use of trait Store from authorship pallet * Remove use of trait Store from authority-discovery pallet * Remove use of trait Store from atomic-swap pallet * Remove use of trait Store from sudo pallet * Remove use of trait Store from scheduler pallet * Remove use of trait Store from scored-pool pallet * Remove use of trait Store from society pallet * Remove use of trait Store from lottery pallet * Remove use of trait Store from executive pallet * Remove use of trait Store from democracy pallet * Remove use of trait Store from elections-phragmen pallet * Remove use of trait Store from indices pallet * Remove use of trait Store from identity pallet * Remove use of trait Store from multisig pallet * Remove use of trait Store from merkle-mountain-range pallet * Remove use of trait Store from im-online pallet * Remove use of trait Store from membership pallet * Remove use of trait Store from nicks pallet * Remove use of trait Store from session pallet * Remove use of trait Store from transaction-payment pallet * Remove use of trait Store from utility pallet * Remove use of trait Store from child-bounties pallet * Remove use of trait Store from nis pallet * Remove use of trait Store from nfts pallet * Remove use of trait Store from conviction-voting pallet * Remove use of trait Store from treasury pallet * Remove use of trait Store from vesting pallet * Remove use of trait Store from preimage pallet * Remove use of trait Store from uniques pallet * Remove use of trait Store from ranked-collective pallet * Remove use of trait Store from beefy-mmr pallet * Remove use of trait Store from referenda pallet * Remove use of trait Store from whitelist pallet * Remove use of trait Store from alliance pallet * Remove use of trait Store from nomination-pools pallet * Remove use of trait Store from state-trie-migration pallet * Remove use of trait Store from message-queue pallet * Remove use of trait Store from root-offences pallet * Remove use of trait Store from root-testing pallet * Remove use of trait Store from timestamps pallet * Remove use of trait Store from system pallet * Remove use of trait Store from offences pallet * Remove use of trait Store from recovery pallet * Remove use of trait Store from node-authorization pallet * Remove use of trait Store from proxy pallet * Remove use of trait Store from benchmarking pallet * Remove use of trait Store from bags-list pallet * Add deprecated warning in store_trait * Change warning message * Run cargo fmt * Fix warning and update tests * Remove unnecessary allow deprecated * Remove use of trait Store * Fix mismatch in expected output * Minor update to warning message for deprecation of generate_store with Store trait attribute * Fixes as per review comments * Fixes as per review suggestions * Remove use of Store trait from core-fellowship pallet * Fix type in store_trait.rs * Fixes as pre review comment
This commit is contained in:
@@ -20,7 +20,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Configure the pallet by specifying the parameters and types on which it depends.
|
||||
|
||||
@@ -222,7 +222,6 @@ pub mod pallet {
|
||||
use super::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub (super) trait Store)]
|
||||
#[pallet::storage_version(migration::STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
|
||||
@@ -197,7 +197,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
|
||||
@@ -184,7 +184,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::storage]
|
||||
|
||||
@@ -38,7 +38,6 @@ pub mod pallet {
|
||||
use frame_support::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -49,7 +49,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -114,7 +114,6 @@ pub mod pallet {
|
||||
|
||||
/// The BABE Pallet
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -99,7 +99,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -253,7 +253,6 @@ pub mod pallet {
|
||||
frame_support::traits::StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
|
||||
@@ -95,7 +95,6 @@ pub mod pallet {
|
||||
|
||||
/// BEEFY-MMR pallet.
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// The module's configuration trait.
|
||||
|
||||
@@ -32,7 +32,6 @@ pub mod pallet {
|
||||
use sp_std::prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -35,7 +35,6 @@ mod pallet_test {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -34,7 +34,6 @@ mod pallet_test {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
pub trait OtherConfig {
|
||||
|
||||
@@ -188,7 +188,6 @@ pub mod pallet {
|
||||
use super::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -130,7 +130,6 @@ pub mod pallet {
|
||||
use super::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -175,7 +175,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
@@ -57,7 +57,6 @@ mod mock_democracy {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -92,7 +92,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -148,7 +148,6 @@ pub mod pallet {
|
||||
const RANK_COUNT: usize = 9;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -217,7 +217,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -187,7 +187,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
@@ -379,7 +379,6 @@ pub mod pallet {
|
||||
// Simple declaration of the `Pallet` type. It is placeholder we use to implement traits and
|
||||
// method.
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
// Pallet implements [`Hooks`] trait to define some logic to execute in some context.
|
||||
|
||||
@@ -158,7 +158,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -706,7 +706,6 @@ mod tests {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -77,7 +77,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -152,7 +152,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Information that is pertinent to identify the entity behind an account.
|
||||
|
||||
@@ -313,7 +313,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -75,7 +75,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::call]
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
//! # DO NOT USE IN PRODUCTION
|
||||
//!
|
||||
//! The produced values do not fulfill the cryptographic requirements for random numbers.
|
||||
//! The produced values do not fulfill the cryptographic requirements for random numbers.
|
||||
//! Should not be used for high-stake production use-cases.
|
||||
//!
|
||||
//! # Randomness Pallet
|
||||
@@ -51,7 +51,6 @@
|
||||
//! use frame_system::pallet_prelude::*;
|
||||
//!
|
||||
//! #[pallet::pallet]
|
||||
//! #[pallet::generate_store(pub(super) trait Store)]
|
||||
//! pub struct Pallet<T>(_);
|
||||
//!
|
||||
//! #[pallet::config]
|
||||
@@ -94,7 +93,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -123,7 +123,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// The pallet's config trait.
|
||||
|
||||
@@ -50,7 +50,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
|
||||
@@ -121,7 +121,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
/// This pallet's configuration trait
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
//! which queue it will be stored. Messages are stored by being appended to the last [`Page`] of a
|
||||
//! book. Each book keeps track of its pages by indexing `Pages`. The `ReadyRing` contains all
|
||||
//! queues which hold at least one unprocessed message and are thereby *ready* to be serviced. The
|
||||
//! `ServiceHead` indicates which *ready* queue is the next to be serviced.
|
||||
//! `ServiceHead` indicates which *ready* queue is the next to be serviced.
|
||||
//! The pallet implements [`frame_support::traits::EnqueueMessage`],
|
||||
//! [`frame_support::traits::ServiceQueues`] and has [`frame_support::traits::ProcessMessage`] and
|
||||
//! [`OnQueueChanged`] hooks to communicate with the outside world.
|
||||
@@ -438,7 +438,6 @@ pub mod pallet {
|
||||
use super::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// The module configuration trait.
|
||||
|
||||
@@ -172,7 +172,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -75,7 +75,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
|
||||
@@ -114,7 +114,6 @@ pub mod pallet {
|
||||
StorageMap<_, Twox64Concat, T::AccountId, (BoundedVec<u8, T::MaxLength>, BalanceOf<T>)>;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::call]
|
||||
|
||||
@@ -310,7 +310,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// A single bid, an item of a *queue* in `Queues`.
|
||||
|
||||
@@ -59,7 +59,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -1214,7 +1214,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(3);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ pub mod pallet {
|
||||
use frame_support::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -107,7 +107,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
|
||||
@@ -102,7 +102,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Configuration trait.
|
||||
|
||||
@@ -321,7 +321,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -218,7 +218,6 @@ pub mod pallet {
|
||||
use sp_runtime::ArithmeticError;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Configuration trait.
|
||||
|
||||
@@ -145,7 +145,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
|
||||
@@ -57,7 +57,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::event]
|
||||
|
||||
@@ -39,7 +39,6 @@ pub mod pallet {
|
||||
pub trait Config: frame_system::Config {}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::call]
|
||||
|
||||
@@ -155,7 +155,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -172,7 +172,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
|
||||
@@ -50,7 +50,6 @@ pub mod logger {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -135,7 +135,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -62,7 +62,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
@@ -97,7 +96,7 @@ impl<T: Config> Pallet<T> {
|
||||
/// Prune historical stored session roots up to (but not including)
|
||||
/// `up_to`.
|
||||
pub fn prune_up_to(up_to: SessionIndex) {
|
||||
<Self as Store>::StoredRange::mutate(|range| {
|
||||
StoredRange::<T>::mutate(|range| {
|
||||
let (start, end) = match *range {
|
||||
Some(range) => range,
|
||||
None => return, // nothing to prune.
|
||||
@@ -109,7 +108,7 @@ impl<T: Config> Pallet<T> {
|
||||
return // out of bounds. harmless.
|
||||
}
|
||||
|
||||
(start..up_to).for_each(<Self as Store>::HistoricalSessions::remove);
|
||||
(start..up_to).for_each(HistoricalSessions::<T>::remove);
|
||||
|
||||
let new_start = up_to;
|
||||
*range = if new_start == end {
|
||||
|
||||
@@ -371,7 +371,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(0);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
@@ -371,7 +371,6 @@ pub mod pallet {
|
||||
use super::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
|
||||
@@ -265,7 +265,7 @@ pub mod v10 {
|
||||
impl<T: Config> OnRuntimeUpgrade for MigrateToV10<T> {
|
||||
fn on_runtime_upgrade() -> frame_support::weights::Weight {
|
||||
if StorageVersion::<T>::get() == ObsoleteReleases::V9_0_0 {
|
||||
let pending_slashes = <Pallet<T> as Store>::UnappliedSlashes::iter().take(512);
|
||||
let pending_slashes = UnappliedSlashes::<T>::iter().take(512);
|
||||
for (era, slashes) in pending_slashes {
|
||||
for slash in slashes {
|
||||
// in the old slashing scheme, the slash era was the key at which we read
|
||||
|
||||
@@ -682,7 +682,7 @@ impl<T: Config> Pallet<T> {
|
||||
|
||||
/// Apply previously-unapplied slashes on the beginning of a new era, after a delay.
|
||||
fn apply_unapplied_slashes(active_era: EraIndex) {
|
||||
let era_slashes = <Self as Store>::UnappliedSlashes::take(&active_era);
|
||||
let era_slashes = UnappliedSlashes::<T>::take(&active_era);
|
||||
log!(
|
||||
debug,
|
||||
"found {} slashes scheduled to be executed in era {:?}",
|
||||
@@ -1369,7 +1369,7 @@ where
|
||||
active_era,
|
||||
slash_era + slash_defer_duration + 1,
|
||||
);
|
||||
<Self as Store>::UnappliedSlashes::mutate(
|
||||
UnappliedSlashes::<T>::mutate(
|
||||
slash_era.saturating_add(slash_defer_duration).saturating_add(One::one()),
|
||||
move |for_later| for_later.push(unapplied),
|
||||
);
|
||||
|
||||
@@ -68,7 +68,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(13);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
@@ -1452,7 +1451,7 @@ pub mod pallet {
|
||||
ensure!(!slash_indices.is_empty(), Error::<T>::EmptyTargets);
|
||||
ensure!(is_sorted_and_unique(&slash_indices), Error::<T>::NotSortedAndUnique);
|
||||
|
||||
let mut unapplied = <Self as Store>::UnappliedSlashes::get(&era);
|
||||
let mut unapplied = UnappliedSlashes::<T>::get(&era);
|
||||
let last_item = slash_indices[slash_indices.len() - 1];
|
||||
ensure!((last_item as usize) < unapplied.len(), Error::<T>::InvalidSlashIndex);
|
||||
|
||||
@@ -1461,7 +1460,7 @@ pub mod pallet {
|
||||
unapplied.remove(index);
|
||||
}
|
||||
|
||||
<Self as Store>::UnappliedSlashes::insert(&era, &unapplied);
|
||||
UnappliedSlashes::<T>::insert(&era, &unapplied);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -50,8 +50,9 @@
|
||||
//! Based on research at <https://research.web3.foundation/en/latest/polkadot/slashing/npos.html>
|
||||
|
||||
use crate::{
|
||||
BalanceOf, Config, Error, Exposure, NegativeImbalanceOf, Pallet, Perbill, SessionInterface,
|
||||
Store, UnappliedSlash,
|
||||
BalanceOf, Config, Error, Exposure, NegativeImbalanceOf, NominatorSlashInEra,
|
||||
OffendingValidators, Pallet, Perbill, SessionInterface, SpanSlash, UnappliedSlash,
|
||||
ValidatorSlashInEra,
|
||||
};
|
||||
use codec::{Decode, Encode, MaxEncodedLen};
|
||||
use frame_support::{
|
||||
@@ -239,14 +240,13 @@ pub(crate) fn compute_slash<T: Config>(
|
||||
return None
|
||||
}
|
||||
|
||||
let prior_slash_p =
|
||||
<Pallet<T> as Store>::ValidatorSlashInEra::get(¶ms.slash_era, params.stash)
|
||||
.map_or(Zero::zero(), |(prior_slash_proportion, _)| prior_slash_proportion);
|
||||
let prior_slash_p = ValidatorSlashInEra::<T>::get(¶ms.slash_era, params.stash)
|
||||
.map_or(Zero::zero(), |(prior_slash_proportion, _)| prior_slash_proportion);
|
||||
|
||||
// compare slash proportions rather than slash values to avoid issues due to rounding
|
||||
// error.
|
||||
if params.slash.deconstruct() > prior_slash_p.deconstruct() {
|
||||
<Pallet<T> as Store>::ValidatorSlashInEra::insert(
|
||||
ValidatorSlashInEra::<T>::insert(
|
||||
¶ms.slash_era,
|
||||
params.stash,
|
||||
&(params.slash, own_slash),
|
||||
@@ -327,7 +327,7 @@ fn kick_out_if_recent<T: Config>(params: SlashParams<T>) {
|
||||
/// If after adding the validator `OffendingValidatorsThreshold` is reached
|
||||
/// a new era will be forced.
|
||||
fn add_offending_validator<T: Config>(stash: &T::AccountId, disable: bool) {
|
||||
<Pallet<T> as Store>::OffendingValidators::mutate(|offending| {
|
||||
OffendingValidators::<T>::mutate(|offending| {
|
||||
let validators = T::SessionInterface::validators();
|
||||
let validator_index = match validators.iter().position(|i| i == stash) {
|
||||
Some(index) => index,
|
||||
@@ -388,10 +388,9 @@ fn slash_nominators<T: Config>(
|
||||
let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior);
|
||||
|
||||
let mut era_slash =
|
||||
<Pallet<T> as Store>::NominatorSlashInEra::get(¶ms.slash_era, stash)
|
||||
.unwrap_or_else(Zero::zero);
|
||||
NominatorSlashInEra::<T>::get(¶ms.slash_era, stash).unwrap_or_else(Zero::zero);
|
||||
era_slash += own_slash_difference;
|
||||
<Pallet<T> as Store>::NominatorSlashInEra::insert(¶ms.slash_era, stash, &era_slash);
|
||||
NominatorSlashInEra::<T>::insert(¶ms.slash_era, stash, &era_slash);
|
||||
|
||||
era_slash
|
||||
};
|
||||
@@ -445,9 +444,9 @@ fn fetch_spans<'a, T: Config + 'a>(
|
||||
slash_of: &'a mut BalanceOf<T>,
|
||||
reward_proportion: Perbill,
|
||||
) -> InspectingSpans<'a, T> {
|
||||
let spans = <Pallet<T> as Store>::SlashingSpans::get(stash).unwrap_or_else(|| {
|
||||
let spans = crate::SlashingSpans::<T>::get(stash).unwrap_or_else(|| {
|
||||
let spans = SlashingSpans::new(window_start);
|
||||
<Pallet<T> as Store>::SlashingSpans::insert(stash, &spans);
|
||||
crate::SlashingSpans::<T>::insert(stash, &spans);
|
||||
spans
|
||||
});
|
||||
|
||||
@@ -496,7 +495,7 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> {
|
||||
) -> Option<SpanIndex> {
|
||||
let target_span = self.era_span(slash_era)?;
|
||||
let span_slash_key = (self.stash.clone(), target_span.index);
|
||||
let mut span_record = <Pallet<T> as Store>::SpanSlash::get(&span_slash_key);
|
||||
let mut span_record = SpanSlash::<T>::get(&span_slash_key);
|
||||
let mut changed = false;
|
||||
|
||||
let reward = if span_record.slashed < slash {
|
||||
@@ -527,7 +526,7 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> {
|
||||
|
||||
if changed {
|
||||
self.dirty = true;
|
||||
<Pallet<T> as Store>::SpanSlash::insert(&span_slash_key, &span_record);
|
||||
SpanSlash::<T>::insert(&span_slash_key, &span_record);
|
||||
}
|
||||
|
||||
Some(target_span.index)
|
||||
@@ -543,20 +542,20 @@ impl<'a, T: 'a + Config> Drop for InspectingSpans<'a, T> {
|
||||
|
||||
if let Some((start, end)) = self.spans.prune(self.window_start) {
|
||||
for span_index in start..end {
|
||||
<Pallet<T> as Store>::SpanSlash::remove(&(self.stash.clone(), span_index));
|
||||
SpanSlash::<T>::remove(&(self.stash.clone(), span_index));
|
||||
}
|
||||
}
|
||||
|
||||
<Pallet<T> as Store>::SlashingSpans::insert(self.stash, &self.spans);
|
||||
crate::SlashingSpans::<T>::insert(self.stash, &self.spans);
|
||||
}
|
||||
}
|
||||
|
||||
/// Clear slashing metadata for an obsolete era.
|
||||
pub(crate) fn clear_era_metadata<T: Config>(obsolete_era: EraIndex) {
|
||||
#[allow(deprecated)]
|
||||
<Pallet<T> as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era, None);
|
||||
ValidatorSlashInEra::<T>::remove_prefix(&obsolete_era, None);
|
||||
#[allow(deprecated)]
|
||||
<Pallet<T> as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era, None);
|
||||
NominatorSlashInEra::<T>::remove_prefix(&obsolete_era, None);
|
||||
}
|
||||
|
||||
/// Clear slashing metadata for a dead account.
|
||||
@@ -564,7 +563,7 @@ pub(crate) fn clear_stash_metadata<T: Config>(
|
||||
stash: &T::AccountId,
|
||||
num_slashing_spans: u32,
|
||||
) -> DispatchResult {
|
||||
let spans = match <Pallet<T> as Store>::SlashingSpans::get(stash) {
|
||||
let spans = match crate::SlashingSpans::<T>::get(stash) {
|
||||
None => return Ok(()),
|
||||
Some(s) => s,
|
||||
};
|
||||
@@ -574,7 +573,7 @@ pub(crate) fn clear_stash_metadata<T: Config>(
|
||||
Error::<T>::IncorrectSlashingSpans
|
||||
);
|
||||
|
||||
<Pallet<T> as Store>::SlashingSpans::remove(stash);
|
||||
crate::SlashingSpans::<T>::remove(stash);
|
||||
|
||||
// kill slashing-span metadata for account.
|
||||
//
|
||||
@@ -582,7 +581,7 @@ pub(crate) fn clear_stash_metadata<T: Config>(
|
||||
// in that case, they may re-bond, but it would count again as span 0. Further ancient
|
||||
// slashes would slash into this new bond, since metadata has now been cleared.
|
||||
for span in spans.iter() {
|
||||
<Pallet<T> as Store>::SpanSlash::remove(&(stash.clone(), span.index));
|
||||
SpanSlash::<T>::remove(&(stash.clone(), span.index));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
@@ -512,10 +512,10 @@ fn no_candidate_emergency_condition() {
|
||||
// initial validators
|
||||
assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]);
|
||||
let prefs = ValidatorPrefs { commission: Perbill::one(), ..Default::default() };
|
||||
<Staking as crate::Store>::Validators::insert(11, prefs.clone());
|
||||
Validators::<Test>::insert(11, prefs.clone());
|
||||
|
||||
// set the minimum validator count.
|
||||
<Staking as crate::Store>::MinimumValidatorCount::put(10);
|
||||
MinimumValidatorCount::<Test>::put(10);
|
||||
|
||||
// try to chill
|
||||
let res = Staking::chill(RuntimeOrigin::signed(10));
|
||||
@@ -536,7 +536,7 @@ fn no_candidate_emergency_condition() {
|
||||
// changed)
|
||||
assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]);
|
||||
// The chill is still pending.
|
||||
assert!(!<Staking as crate::Store>::Validators::contains_key(11));
|
||||
assert!(!Validators::<Test>::contains_key(11));
|
||||
// No new era is created.
|
||||
assert_eq!(current_era, CurrentEra::<Test>::get());
|
||||
});
|
||||
@@ -2432,7 +2432,7 @@ fn slash_in_old_span_does_not_deselect() {
|
||||
);
|
||||
|
||||
// the validator doesn't get chilled again
|
||||
assert!(<Staking as Store>::Validators::iter().any(|(stash, _)| stash == 11));
|
||||
assert!(Validators::<Test>::iter().any(|(stash, _)| stash == 11));
|
||||
|
||||
// but we are still forcing a new era
|
||||
assert_eq!(Staking::force_era(), Forcing::ForceNew);
|
||||
@@ -2449,7 +2449,7 @@ fn slash_in_old_span_does_not_deselect() {
|
||||
);
|
||||
|
||||
// the validator doesn't get chilled again
|
||||
assert!(<Staking as Store>::Validators::iter().any(|(stash, _)| stash == 11));
|
||||
assert!(Validators::<Test>::iter().any(|(stash, _)| stash == 11));
|
||||
|
||||
// but it's disabled
|
||||
assert!(is_disabled(10));
|
||||
@@ -2648,8 +2648,8 @@ fn garbage_collection_after_slashing() {
|
||||
);
|
||||
|
||||
assert_eq!(Balances::free_balance(11), 2000 - 200);
|
||||
assert!(<Staking as crate::Store>::SlashingSpans::get(&11).is_some());
|
||||
assert_eq!(<Staking as crate::Store>::SpanSlash::get(&(11, 0)).amount(), &200);
|
||||
assert!(SlashingSpans::<Test>::get(&11).is_some());
|
||||
assert_eq!(SpanSlash::<Test>::get(&(11, 0)).amount(), &200);
|
||||
|
||||
on_offence_now(
|
||||
&[OffenceDetails {
|
||||
@@ -2665,7 +2665,7 @@ fn garbage_collection_after_slashing() {
|
||||
assert_eq!(Balances::free_balance(11), 2);
|
||||
assert_eq!(Balances::total_balance(&11), 2);
|
||||
|
||||
let slashing_spans = <Staking as crate::Store>::SlashingSpans::get(&11).unwrap();
|
||||
let slashing_spans = SlashingSpans::<Test>::get(&11).unwrap();
|
||||
assert_eq!(slashing_spans.iter().count(), 2);
|
||||
|
||||
// reap_stash respects num_slashing_spans so that weight is accurate
|
||||
@@ -2675,8 +2675,8 @@ fn garbage_collection_after_slashing() {
|
||||
);
|
||||
assert_ok!(Staking::reap_stash(RuntimeOrigin::signed(20), 11, 2));
|
||||
|
||||
assert!(<Staking as crate::Store>::SlashingSpans::get(&11).is_none());
|
||||
assert_eq!(<Staking as crate::Store>::SpanSlash::get(&(11, 0)).amount(), &0);
|
||||
assert!(SlashingSpans::<Test>::get(&11).is_none());
|
||||
assert_eq!(SpanSlash::<Test>::get(&(11, 0)).amount(), &0);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2702,19 +2702,19 @@ fn garbage_collection_on_window_pruning() {
|
||||
assert_eq!(Balances::free_balance(11), 900);
|
||||
assert_eq!(Balances::free_balance(101), 2000 - (nominated_value / 10));
|
||||
|
||||
assert!(<Staking as crate::Store>::ValidatorSlashInEra::get(&now, &11).is_some());
|
||||
assert!(<Staking as crate::Store>::NominatorSlashInEra::get(&now, &101).is_some());
|
||||
assert!(ValidatorSlashInEra::<Test>::get(&now, &11).is_some());
|
||||
assert!(NominatorSlashInEra::<Test>::get(&now, &101).is_some());
|
||||
|
||||
// + 1 because we have to exit the bonding window.
|
||||
for era in (0..(BondingDuration::get() + 1)).map(|offset| offset + now + 1) {
|
||||
assert!(<Staking as crate::Store>::ValidatorSlashInEra::get(&now, &11).is_some());
|
||||
assert!(<Staking as crate::Store>::NominatorSlashInEra::get(&now, &101).is_some());
|
||||
assert!(ValidatorSlashInEra::<Test>::get(&now, &11).is_some());
|
||||
assert!(NominatorSlashInEra::<Test>::get(&now, &101).is_some());
|
||||
|
||||
mock::start_active_era(era);
|
||||
}
|
||||
|
||||
assert!(<Staking as crate::Store>::ValidatorSlashInEra::get(&now, &11).is_none());
|
||||
assert!(<Staking as crate::Store>::NominatorSlashInEra::get(&now, &101).is_none());
|
||||
assert!(ValidatorSlashInEra::<Test>::get(&now, &11).is_none());
|
||||
assert!(NominatorSlashInEra::<Test>::get(&now, &101).is_none());
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2755,7 +2755,7 @@ fn slashing_nominators_by_span_max() {
|
||||
slashing::SlashingSpan { index: 0, start: 0, length: Some(4) },
|
||||
];
|
||||
|
||||
let get_span = |account| <Staking as crate::Store>::SlashingSpans::get(&account).unwrap();
|
||||
let get_span = |account| SlashingSpans::<Test>::get(&account).unwrap();
|
||||
|
||||
assert_eq!(get_span(11).iter().collect::<Vec<_>>(), expected_spans);
|
||||
|
||||
@@ -2817,7 +2817,7 @@ fn slashes_are_summed_across_spans() {
|
||||
assert_eq!(Balances::free_balance(21), 2000);
|
||||
assert_eq!(Staking::slashable_balance_of(&21), 1000);
|
||||
|
||||
let get_span = |account| <Staking as crate::Store>::SlashingSpans::get(&account).unwrap();
|
||||
let get_span = |account| SlashingSpans::<Test>::get(&account).unwrap();
|
||||
|
||||
on_offence_now(
|
||||
&[OffenceDetails {
|
||||
@@ -3192,7 +3192,7 @@ fn remove_multi_deferred() {
|
||||
&[Perbill::from_percent(25)],
|
||||
);
|
||||
|
||||
assert_eq!(<Staking as Store>::UnappliedSlashes::get(&4).len(), 5);
|
||||
assert_eq!(UnappliedSlashes::<Test>::get(&4).len(), 5);
|
||||
|
||||
// fails if list is not sorted
|
||||
assert_noop!(
|
||||
@@ -3212,7 +3212,7 @@ fn remove_multi_deferred() {
|
||||
|
||||
assert_ok!(Staking::cancel_deferred_slash(RuntimeOrigin::root(), 4, vec![0, 2, 4]));
|
||||
|
||||
let slashes = <Staking as Store>::UnappliedSlashes::get(&4);
|
||||
let slashes = UnappliedSlashes::<Test>::get(&4);
|
||||
assert_eq!(slashes.len(), 2);
|
||||
assert_eq!(slashes[0].validator, 21);
|
||||
assert_eq!(slashes[1].validator, 42);
|
||||
@@ -3267,7 +3267,7 @@ fn slash_kicks_validators_not_nominators_and_disables_nominator_for_kicked_valid
|
||||
assert_eq!(Balances::free_balance(101), 2000 - nominator_slash_amount_11);
|
||||
|
||||
// check that validator was chilled.
|
||||
assert!(<Staking as Store>::Validators::iter().all(|(stash, _)| stash != 11));
|
||||
assert!(Validators::<Test>::iter().all(|(stash, _)| stash != 11));
|
||||
|
||||
// actually re-bond the slashed validator
|
||||
assert_ok!(Staking::validate(RuntimeOrigin::signed(10), Default::default()));
|
||||
@@ -3612,7 +3612,7 @@ fn zero_slash_keeps_nominators() {
|
||||
assert_eq!(Balances::free_balance(101), 2000);
|
||||
|
||||
// 11 is still removed..
|
||||
assert!(<Staking as Store>::Validators::iter().all(|(stash, _)| stash != 11));
|
||||
assert!(Validators::<Test>::iter().all(|(stash, _)| stash != 11));
|
||||
// but their nominations are kept.
|
||||
assert_eq!(Staking::nominators(101).unwrap().targets, vec![11, 21]);
|
||||
});
|
||||
|
||||
@@ -439,7 +439,6 @@ pub mod pallet {
|
||||
|
||||
/// The outer Pallet struct.
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Configurations of this pallet.
|
||||
|
||||
@@ -133,7 +133,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::call]
|
||||
|
||||
@@ -39,7 +39,6 @@ pub mod logger {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
#[pallet::call]
|
||||
|
||||
@@ -22,7 +22,7 @@ use syn::spanned::Spanned;
|
||||
/// * generate Store trait with all storages,
|
||||
/// * implement Store trait for Pallet.
|
||||
pub fn expand_store_trait(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
let (trait_vis, trait_store) =
|
||||
let (trait_vis, trait_store, attribute_span) =
|
||||
if let Some(store) = &def.pallet_struct.store { store } else { return Default::default() };
|
||||
|
||||
let type_impl_gen = &def.type_impl_generics(trait_store.span());
|
||||
@@ -36,8 +36,19 @@ pub fn expand_store_trait(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
let storage_names = &def.storages.iter().map(|storage| &storage.ident).collect::<Vec<_>>();
|
||||
let storage_cfg_attrs =
|
||||
&def.storages.iter().map(|storage| &storage.cfg_attrs).collect::<Vec<_>>();
|
||||
let warnig_struct_name = syn::Ident::new("Store", *attribute_span);
|
||||
let warning: syn::ItemStruct = syn::parse_quote!(
|
||||
#[deprecated(note = r"
|
||||
Use of `#[pallet::generate_store(pub(super) trait Store)]` will be removed soon.
|
||||
Check https://github.com/paritytech/substrate/pull/13535 for more details.")]
|
||||
struct #warnig_struct_name;
|
||||
);
|
||||
|
||||
quote::quote_spanned!(trait_store.span() =>
|
||||
const _:() = {
|
||||
#warning
|
||||
const _: Option<#warnig_struct_name> = None;
|
||||
};
|
||||
#trait_vis trait #trait_store {
|
||||
#(
|
||||
#(#storage_cfg_attrs)*
|
||||
|
||||
@@ -38,7 +38,7 @@ pub struct PalletStructDef {
|
||||
/// The keyword Pallet used (contains span).
|
||||
pub pallet: keyword::Pallet,
|
||||
/// Whether the trait `Store` must be generated.
|
||||
pub store: Option<(syn::Visibility, keyword::Store)>,
|
||||
pub store: Option<(syn::Visibility, keyword::Store, proc_macro2::Span)>,
|
||||
/// The span of the pallet::pallet attribute.
|
||||
pub attr_span: proc_macro2::Span,
|
||||
/// Whether to specify the storages max encoded len when implementing `StorageInfoTrait`.
|
||||
@@ -78,13 +78,13 @@ impl syn::parse::Parse for PalletStructAttr {
|
||||
|
||||
let lookahead = content.lookahead1();
|
||||
if lookahead.peek(keyword::generate_store) {
|
||||
let span = content.parse::<keyword::generate_store>()?.span();
|
||||
|
||||
content.parse::<keyword::generate_store>()?;
|
||||
let generate_content;
|
||||
syn::parenthesized!(generate_content in content);
|
||||
let vis = generate_content.parse::<syn::Visibility>()?;
|
||||
generate_content.parse::<syn::Token![trait]>()?;
|
||||
let keyword = generate_content.parse::<keyword::Store>()?;
|
||||
let span = content.span();
|
||||
Ok(Self::GenerateStore { vis, keyword, span })
|
||||
} else if lookahead.peek(keyword::without_storage_info) {
|
||||
let span = content.parse::<keyword::without_storage_info>()?.span();
|
||||
@@ -123,8 +123,8 @@ impl PalletStructDef {
|
||||
let struct_attrs: Vec<PalletStructAttr> = helper::take_item_pallet_attrs(&mut item.attrs)?;
|
||||
for attr in struct_attrs {
|
||||
match attr {
|
||||
PalletStructAttr::GenerateStore { vis, keyword, .. } if store.is_none() => {
|
||||
store = Some((vis, keyword));
|
||||
PalletStructAttr::GenerateStore { vis, keyword, span } if store.is_none() => {
|
||||
store = Some((vis, keyword, span));
|
||||
},
|
||||
PalletStructAttr::WithoutStorageInfoTrait(span)
|
||||
if without_storage_info.is_none() =>
|
||||
|
||||
@@ -158,7 +158,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
@@ -496,7 +495,6 @@ pub mod pallet2 {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
@@ -946,15 +944,6 @@ fn validate_unsigned_expand() {
|
||||
assert_eq!(validity, ValidTransaction::default());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn trait_store_expand() {
|
||||
TestExternalities::default().execute_with(|| {
|
||||
<pallet::Pallet<Runtime> as pallet::Store>::Value::get();
|
||||
<pallet::Pallet<Runtime> as pallet::Store>::Map::get(1);
|
||||
<pallet::Pallet<Runtime> as pallet::Store>::DoubleMap::get(1, 2);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pallet_expand_deposit_event() {
|
||||
TestExternalities::default().execute_with(|| {
|
||||
|
||||
@@ -46,7 +46,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::hooks]
|
||||
@@ -260,7 +259,6 @@ pub mod pallet2 {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(crate) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::event]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#[frame_support::pallet]
|
||||
mod pallet {
|
||||
#[pallet::config]
|
||||
pub trait Config: frame_system::Config {}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(trait Store)]
|
||||
pub struct Pallet<T>(core::marker::PhantomData<T>);
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,9 @@
|
||||
error: use of deprecated struct `pallet::_::Store`:
|
||||
Use of `#[pallet::generate_store(pub(super) trait Store)]` will be removed soon.
|
||||
Check https://github.com/paritytech/substrate/pull/13535 for more details.
|
||||
--> tests/pallet_ui/deprecated_store_attr.rs:7:3
|
||||
|
|
||||
7 | #[pallet::generate_store(trait Store)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D deprecated` implied by `-D warnings`
|
||||
@@ -8,7 +8,6 @@ mod pallet {
|
||||
pub trait Config: frame_system::Config {}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(trait Store)]
|
||||
pub struct Pallet<T>(core::marker::PhantomData<T>);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: Invalid duplicated attribute
|
||||
--> $DIR/duplicate_call_attr.rs:23:12
|
||||
--> $DIR/duplicate_call_attr.rs:22:12
|
||||
|
|
||||
23 | #[pallet::call]
|
||||
22 | #[pallet::call]
|
||||
| ^^^^
|
||||
|
||||
@@ -6,7 +6,6 @@ mod pallet {
|
||||
pub trait Config: frame_system::Config {}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(trait Store)]
|
||||
pub struct Pallet<T>(core::marker::PhantomData<T>);
|
||||
|
||||
#[pallet::storage]
|
||||
|
||||
@@ -1,47 +1,47 @@
|
||||
error: Duplicate storage prefixes found for `Foo`
|
||||
--> $DIR/duplicate_storage_prefix.rs:16:29
|
||||
--> $DIR/duplicate_storage_prefix.rs:15:29
|
||||
|
|
||||
16 | #[pallet::storage_prefix = "Foo"]
|
||||
15 | #[pallet::storage_prefix = "Foo"]
|
||||
| ^^^^^
|
||||
|
||||
error: Duplicate storage prefixes found for `Foo`
|
||||
--> $DIR/duplicate_storage_prefix.rs:13:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:12:7
|
||||
|
|
||||
13 | type Foo<T> = StorageValue<_, u8>;
|
||||
12 | type Foo<T> = StorageValue<_, u8>;
|
||||
| ^^^
|
||||
|
||||
error: Duplicate storage prefixes found for `CounterForBar`, used for counter associated to counted storage map
|
||||
--> $DIR/duplicate_storage_prefix.rs:23:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:22:7
|
||||
|
|
||||
23 | type Bar<T> = CountedStorageMap<_, Twox64Concat, u16, u16>;
|
||||
22 | type Bar<T> = CountedStorageMap<_, Twox64Concat, u16, u16>;
|
||||
| ^^^
|
||||
|
||||
error: Duplicate storage prefixes found for `CounterForBar`
|
||||
--> $DIR/duplicate_storage_prefix.rs:20:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:19:7
|
||||
|
|
||||
20 | type CounterForBar<T> = StorageValue<_, u16>;
|
||||
19 | type CounterForBar<T> = StorageValue<_, u16>;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0412]: cannot find type `_GeneratedPrefixForStorageFoo` in this scope
|
||||
--> $DIR/duplicate_storage_prefix.rs:13:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:12:7
|
||||
|
|
||||
13 | type Foo<T> = StorageValue<_, u8>;
|
||||
12 | type Foo<T> = StorageValue<_, u8>;
|
||||
| ^^^ not found in this scope
|
||||
|
||||
error[E0412]: cannot find type `_GeneratedPrefixForStorageNotFoo` in this scope
|
||||
--> $DIR/duplicate_storage_prefix.rs:17:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:16:7
|
||||
|
|
||||
17 | type NotFoo<T> = StorageValue<_, u16>;
|
||||
16 | type NotFoo<T> = StorageValue<_, u16>;
|
||||
| ^^^^^^ not found in this scope
|
||||
|
||||
error[E0412]: cannot find type `_GeneratedPrefixForStorageCounterForBar` in this scope
|
||||
--> $DIR/duplicate_storage_prefix.rs:20:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:19:7
|
||||
|
|
||||
20 | type CounterForBar<T> = StorageValue<_, u16>;
|
||||
19 | type CounterForBar<T> = StorageValue<_, u16>;
|
||||
| ^^^^^^^^^^^^^ not found in this scope
|
||||
|
||||
error[E0412]: cannot find type `_GeneratedPrefixForStorageBar` in this scope
|
||||
--> $DIR/duplicate_storage_prefix.rs:23:7
|
||||
--> $DIR/duplicate_storage_prefix.rs:22:7
|
||||
|
|
||||
23 | type Bar<T> = CountedStorageMap<_, Twox64Concat, u16, u16>;
|
||||
22 | type Bar<T> = CountedStorageMap<_, Twox64Concat, u16, u16>;
|
||||
| ^^^ not found in this scope
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: Unexpected duplicated attribute
|
||||
--> $DIR/duplicate_store_attr.rs:12:12
|
||||
--> tests/pallet_ui/duplicate_store_attr.rs:12:3
|
||||
|
|
||||
12 | #[pallet::generate_store(trait Store)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
error: use of deprecated struct `pallet::_::Store`:
|
||||
Use of `#[pallet::generate_store(pub(super) trait Store)]` will be removed soon.
|
||||
Check https://github.com/paritytech/substrate/pull/13535 for more details.
|
||||
--> tests/pallet_ui/store_trait_leak_private.rs:11:3
|
||||
|
|
||||
11 | #[pallet::generate_store(pub trait Store)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D deprecated` implied by `-D warnings`
|
||||
|
||||
error[E0446]: private type `_GeneratedPrefixForStorageFoo<T>` in public interface
|
||||
--> $DIR/store_trait_leak_private.rs:11:37
|
||||
--> tests/pallet_ui/store_trait_leak_private.rs:11:37
|
||||
|
|
||||
11 | #[pallet::generate_store(pub trait Store)]
|
||||
| ^^^^^ can't leak private type
|
||||
|
||||
@@ -29,7 +29,6 @@ mod module {
|
||||
use frame_support::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -357,7 +357,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub (super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -151,7 +151,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
/// Current time for the current block.
|
||||
|
||||
@@ -121,7 +121,6 @@ pub mod pallet {
|
||||
const STORAGE_VERSION: StorageVersion = StorageVersion::new(4);
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::storage_version(STORAGE_VERSION)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
@@ -124,7 +124,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::event]
|
||||
|
||||
@@ -295,7 +295,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -141,7 +141,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::hooks]
|
||||
|
||||
@@ -140,7 +140,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(PhantomData<(T, I)>);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -71,7 +71,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T, I = ()>(_);
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
|
||||
@@ -76,7 +76,6 @@ pub mod pallet {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
/// Configuration trait.
|
||||
|
||||
@@ -96,7 +96,6 @@ mod mock_democracy {
|
||||
use frame_system::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::config]
|
||||
|
||||
@@ -211,7 +211,6 @@ pub mod pallet {
|
||||
pub(crate) type StorageVersion<T: Config> = StorageValue<_, Releases, ValueQuery>;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::genesis_config]
|
||||
|
||||
@@ -88,7 +88,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
pub struct Pallet<T>(_);
|
||||
|
||||
#[pallet::event]
|
||||
|
||||
@@ -47,7 +47,6 @@ mod pallet {
|
||||
use frame_support::pallet_prelude::*;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::generate_store(pub(super) trait Store)]
|
||||
#[pallet::without_storage_info]
|
||||
pub struct Pallet<T>(PhantomData<T>);
|
||||
|
||||
|
||||
@@ -94,7 +94,6 @@ use sp_storage::{StorageData, StorageKey};
|
||||
/// use frame_support::pallet_prelude::*;
|
||||
///
|
||||
/// #[pallet::pallet]
|
||||
/// #[pallet::generate_store(pub(super) trait Store)]
|
||||
/// pub struct Pallet<T>(PhantomData<T>);
|
||||
///
|
||||
/// #[pallet::config]
|
||||
|
||||
Reference in New Issue
Block a user