mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 17:01:09 +00:00
update genesis_config related docs and tests and error messages (#1642)
Follow-up to https://github.com/paritytech/substrate/pull/14306. I hope this also showcases the important message of: **It is really not that hard to make the examples codes in rust-docs compile, and therefore remain correct. Please embrace this :)** It moves the documentation of proc macros to their re-export, such that can link other items in frame-support. This is a patter that we should embrace for all of macro docs, and apply in PRs like https://github.com/paritytech/substrate/pull/13987 as well. --------- Co-authored-by: Gonçalo Pestana <g6pestana@gmail.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: command-bot <>
This commit is contained in:
@@ -1417,57 +1417,11 @@ pub fn type_value(_: TokenStream, _: TokenStream) -> TokenStream {
|
||||
pallet_macro_stub()
|
||||
}
|
||||
|
||||
/// The `#[pallet::genesis_config]` attribute allows you to define the genesis configuration
|
||||
/// for the pallet.
|
||||
///
|
||||
/// Item is defined as either an enum or a struct. It needs to be public and implement the
|
||||
/// trait `GenesisBuild` with [`#[pallet::genesis_build]`](`macro@genesis_build`). The type
|
||||
/// generics are constrained to be either none, or `T` or `T: Config`.
|
||||
///
|
||||
/// E.g:
|
||||
///
|
||||
/// ```ignore
|
||||
/// #[pallet::genesis_config]
|
||||
/// pub struct GenesisConfig<T: Config> {
|
||||
/// _myfield: BalanceOf<T>,
|
||||
/// }
|
||||
/// ```
|
||||
#[proc_macro_attribute]
|
||||
pub fn genesis_config(_: TokenStream, _: TokenStream) -> TokenStream {
|
||||
pallet_macro_stub()
|
||||
}
|
||||
|
||||
/// The `#[pallet::genesis_build]` attribute allows you to define how `genesis_configuration`
|
||||
/// is built. This takes as input the `GenesisConfig` type (as `self`) and constructs the pallet's
|
||||
/// initial state.
|
||||
///
|
||||
/// The impl must be defined as:
|
||||
///
|
||||
/// ```ignore
|
||||
/// #[pallet::genesis_build]
|
||||
/// impl<T: Config> GenesisBuild<T> for GenesisConfig<$maybe_generics> {
|
||||
/// fn build(&self) { $expr }
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// I.e. a trait implementation with generic `T: Config`, of trait `GenesisBuild<T>` on
|
||||
/// type `GenesisConfig` with generics none or `T`.
|
||||
///
|
||||
/// E.g.:
|
||||
///
|
||||
/// ```ignore
|
||||
/// #[pallet::genesis_build]
|
||||
/// impl<T: Config> GenesisBuild<T> for GenesisConfig {
|
||||
/// fn build(&self) {}
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// ## Macro expansion
|
||||
///
|
||||
/// The macro will add the following attribute:
|
||||
/// * `#[cfg(feature = "std")]`
|
||||
///
|
||||
/// The macro will implement `sp_runtime::BuildStorage`.
|
||||
#[proc_macro_attribute]
|
||||
pub fn genesis_build(_: TokenStream, _: TokenStream) -> TokenStream {
|
||||
pallet_macro_stub()
|
||||
|
||||
@@ -38,7 +38,7 @@ pub fn expand_genesis_build(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
#[cfg(feature = "std")]
|
||||
impl<#type_impl_gen> #frame_support::sp_runtime::BuildStorage for #gen_cfg_ident<#gen_cfg_use_gen> #where_clause
|
||||
{
|
||||
fn assimilate_storage(&self, storage: &mut sp_runtime::Storage) -> std::result::Result<(), std::string::String> {
|
||||
fn assimilate_storage(&self, storage: &mut #frame_support::sp_runtime::Storage) -> std::result::Result<(), std::string::String> {
|
||||
#frame_support::__private::BasicExternalities::execute_with_storage(storage, || {
|
||||
self.build();
|
||||
Ok(())
|
||||
|
||||
@@ -494,7 +494,7 @@ pub fn check_type_def_gen(
|
||||
/// return the instance if found for `GenesisBuild`
|
||||
/// return None for BuildGenesisConfig
|
||||
pub fn check_genesis_builder_usage(type_: &syn::Path) -> syn::Result<Option<InstanceUsage>> {
|
||||
let expected = "expected `GenesisBuild<T>` or `GenesisBuild<T, I>`";
|
||||
let expected = "expected `BuildGenesisConfig` (or the deprecated `GenesisBuild<T>` or `GenesisBuild<T, I>`)";
|
||||
pub struct Checker(Option<InstanceUsage>);
|
||||
impl syn::parse::Parse for Checker {
|
||||
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
|
||||
|
||||
Reference in New Issue
Block a user