Skip to content

Commit 44003e8

Browse files
gui1117shawntabrizikianenigmaascjonesbkchr
authored
Add pallet attribute macro to declare pallets (#6877)
* rename system Config to system Trait. command used: ``` find frame/ bin/ test-utils/ utils/ -name *.rs -exec sed -i 's/system::Trait>::/system::Config>::/g' {} \; find frame/ bin/ test-utils/ utils/ -name *.rs -exec sed -i 's/impl frame_system::Trait for /impl frame_system::Config for /g' {} \; find frame/ bin/ test-utils/ utils/ -name *.rs -exec sed -i 's/impl system::Trait for /impl system::Config for /g' {} \; ``` plus some manual ones especially for frame-support tests and frame-system * make construct_runtime handle Pallet and Module pallets can now be implemented on struct named Pallet or Module, both definition are valid. This is because next macro will generate only Pallet placeholder. * introduce pallet attribute macro currently just with tests, frame_system and other example hasn't been upgraded * allow to print some upgrade helper from decl_storage * Improved error msg, typo. Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Improved error msg, typo. Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Improved error message on unexpected attributes + ui test * add test for transactional * various typo * some tips when spans are lost * allow pallet to depend on other pallet instances * make event type metadata consistent with call and constant * error messages * ignore doc example * fix pallet upgrade template * fixup * fix doc * fix indentation * Apply suggestions code formatting Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * some renames + fix compilation * remove unsupported genesis config type alias * merge fixup * fix ui tests * additional doc * implement StorageInstance with new syntax * fix line width * fix doc: because pallet doc goes below reexport doc * Update frame/support/procedural/src/pallet/parse/event.rs Co-authored-by: Andrew Jones <ascjones@gmail.com> * Update frame/system/src/lib.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * Update frame/support/test/tests/pallet_ui.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * improve doc as suggested * revert construct_runtime Pallet part. This revert the changes on construct_runtime. Now construct_runtime is unchanged and instead pallet macro create a type alias `type Module<..> = Pallet<..>` to be used by construct_runtime * refactor with less intricated code * fix ui test with new image * fix ui tests * add minor tests Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Andrew Jones <ascjones@gmail.com> Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
1 parent fe1b40c commit 44003e8

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/lib.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ pub fn extrinsics_data_root<H: Hash>(xts: Vec<Vec<u8>>) -> H::Output {
164164
/// An object to track the currently used extrinsic weight in a block.
165165
pub type ConsumedWeight = PerDispatchClass<Weight>;
166166

167+
/// System configuration trait. Implemented by runtime.
167168
pub trait Config: 'static + Eq + Clone {
168169
/// The basic call filter to use in Origin. All origins are built with this filter as base,
169170
/// except Root.
@@ -497,6 +498,11 @@ decl_error! {
497498
}
498499
}
499500

501+
/// Pallet struct placeholder on which is implemented the pallet logic.
502+
///
503+
/// It is currently an alias for `Module` as old macros still generate/use old name.
504+
pub type Pallet<T> = Module<T>;
505+
500506
decl_module! {
501507
pub struct Module<T: Config> for enum Call where origin: T::Origin, system=self {
502508
type Error = Error<T>;
@@ -1343,3 +1349,14 @@ impl<T: Config> Lookup for ChainContext<T> {
13431349
<T::Lookup as StaticLookup>::lookup(s)
13441350
}
13451351
}
1352+
1353+
/// Prelude to be used alongside pallet macro, for ease of use.
1354+
pub mod pallet_prelude {
1355+
pub use crate::{ensure_signed, ensure_none, ensure_root};
1356+
1357+
/// Type alias for the `Origin` associated type of system config.
1358+
pub type OriginFor<T> = <T as crate::Config>::Origin;
1359+
1360+
/// Type alias for the `BlockNumber` associated type of system config.
1361+
pub type BlockNumberFor<T> = <T as crate::Config>::BlockNumber;
1362+
}

0 commit comments

Comments
 (0)