mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 11:17:56 +00:00
Moves Block to frame_system instead of construct_runtime and removes Header and BlockNumber (#14437)
* Initial setup * Adds node block * Uses UncheckedExtrinsic and removes Where section * Updates frame_system to use Block * Adds deprecation warning * Fixes pallet-timestamp * Removes Header and BlockNumber * Addresses review comments * Addresses review comments * Adds comment about compiler bug * Removes where clause * Refactors code * Fixes errors in cargo check * Fixes errors in cargo check * Fixes warnings in cargo check * Formatting * Fixes construct_runtime tests * Uses import instead of full path for BlockNumber * Uses import instead of full path for Header * Formatting * Fixes construct_runtime tests * Fixes imports in benchmarks * Formatting * Fixes construct_runtime tests * Formatting * Minor updates * Fixes construct_runtime ui tests * Fixes construct_runtime ui tests with 1.70 * Fixes docs * Fixes docs * Adds u128 mock block type * Fixes split example * fixes for cumulus * ".git/.scripts/commands/fmt/fmt.sh" * Updates new tests * Fixes fully-qualified path in few places * Formatting * Update frame/examples/default-config/src/lib.rs Co-authored-by: Juan <juangirini@gmail.com> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Juan <juangirini@gmail.com> * ".git/.scripts/commands/fmt/fmt.sh" * Addresses some review comments * Fixes build * ".git/.scripts/commands/fmt/fmt.sh" * Update frame/democracy/src/lib.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/democracy/src/lib.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Addresses review comments * Updates trait bounds * Minor fix * ".git/.scripts/commands/fmt/fmt.sh" * Removes unnecessary bound * ".git/.scripts/commands/fmt/fmt.sh" * Updates test * Fixes build * Adds a bound for header * ".git/.scripts/commands/fmt/fmt.sh" * Removes where block * Minor fix * Minor fix * Fixes tests * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70 * Updates test * Update primitives/runtime/src/traits.rs Co-authored-by: Bastian Köcher <git@kchr.de> * Update primitives/runtime/src/traits.rs Co-authored-by: Bastian Köcher <git@kchr.de> * Updates doc * Updates doc --------- Co-authored-by: command-bot <> Co-authored-by: Juan <juangirini@gmail.com> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Bastian Köcher <git@kchr.de>
This commit is contained in:
@@ -19,12 +19,12 @@ use crate::construct_runtime::Pallet;
|
||||
use proc_macro2::TokenStream;
|
||||
use quote::quote;
|
||||
use std::str::FromStr;
|
||||
use syn::{Ident, TypePath};
|
||||
use syn::Ident;
|
||||
|
||||
pub fn expand_outer_inherent(
|
||||
runtime: &Ident,
|
||||
block: &TypePath,
|
||||
unchecked_extrinsic: &TypePath,
|
||||
block: &TokenStream,
|
||||
unchecked_extrinsic: &TokenStream,
|
||||
pallet_decls: &[Pallet],
|
||||
scrate: &TokenStream,
|
||||
) -> TokenStream {
|
||||
|
||||
@@ -19,13 +19,13 @@ use crate::construct_runtime::{parse::PalletPath, Pallet};
|
||||
use proc_macro2::TokenStream;
|
||||
use quote::quote;
|
||||
use std::str::FromStr;
|
||||
use syn::{Ident, TypePath};
|
||||
use syn::Ident;
|
||||
|
||||
pub fn expand_runtime_metadata(
|
||||
runtime: &Ident,
|
||||
pallet_declarations: &[Pallet],
|
||||
scrate: &TokenStream,
|
||||
extrinsic: &TypePath,
|
||||
extrinsic: &TokenStream,
|
||||
system_path: &PalletPath,
|
||||
) -> TokenStream {
|
||||
let pallets = pallet_declarations
|
||||
|
||||
@@ -216,10 +216,7 @@ use frame_support_procedural_tools::{
|
||||
generate_crate_access, generate_crate_access_2018, generate_hidden_includes,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
use parse::{
|
||||
ExplicitRuntimeDeclaration, ImplicitRuntimeDeclaration, Pallet, RuntimeDeclaration,
|
||||
WhereSection,
|
||||
};
|
||||
use parse::{ExplicitRuntimeDeclaration, ImplicitRuntimeDeclaration, Pallet, RuntimeDeclaration};
|
||||
use proc_macro::TokenStream;
|
||||
use proc_macro2::TokenStream as TokenStream2;
|
||||
use quote::quote;
|
||||
@@ -337,19 +334,14 @@ fn construct_runtime_explicit_to_explicit_expanded(
|
||||
fn construct_runtime_final_expansion(
|
||||
definition: ExplicitRuntimeDeclaration,
|
||||
) -> Result<TokenStream2> {
|
||||
let ExplicitRuntimeDeclaration {
|
||||
name,
|
||||
where_section: WhereSection { block, node_block, unchecked_extrinsic },
|
||||
pallets,
|
||||
pallets_token,
|
||||
} = definition;
|
||||
let ExplicitRuntimeDeclaration { name, pallets, pallets_token, where_section } = definition;
|
||||
|
||||
let system_pallet =
|
||||
pallets.iter().find(|decl| decl.name == SYSTEM_PALLET_NAME).ok_or_else(|| {
|
||||
syn::Error::new(
|
||||
pallets_token.span.join(),
|
||||
"`System` pallet declaration is missing. \
|
||||
Please add this line: `System: frame_system::{Pallet, Call, Storage, Config, Event<T>},`",
|
||||
Please add this line: `System: frame_system::{Pallet, Call, Storage, Config<T>, Event<T>},`",
|
||||
)
|
||||
})?;
|
||||
if !system_pallet.cfg_pattern.is_empty() {
|
||||
@@ -379,6 +371,10 @@ fn construct_runtime_final_expansion(
|
||||
let scrate = generate_crate_access(hidden_crate_name, "frame-support");
|
||||
let scrate_decl = generate_hidden_includes(hidden_crate_name, "frame-support");
|
||||
|
||||
let frame_system = generate_crate_access_2018("frame-system")?;
|
||||
let block = quote!(<#name as #frame_system::Config>::Block);
|
||||
let unchecked_extrinsic = quote!(<#block as #scrate::sp_runtime::traits::Block>::Extrinsic);
|
||||
|
||||
let outer_event =
|
||||
expand::expand_outer_enum(&name, &pallets, &scrate, expand::OuterEnumType::Event)?;
|
||||
let outer_error =
|
||||
@@ -407,7 +403,21 @@ fn construct_runtime_final_expansion(
|
||||
let integrity_test = decl_integrity_test(&scrate);
|
||||
let static_assertions = decl_static_assertions(&name, &pallets, &scrate);
|
||||
|
||||
let warning =
|
||||
where_section.map_or(None, |where_section| {
|
||||
Some(proc_macro_warning::Warning::new_deprecated("WhereSection")
|
||||
.old("use a `where` clause in `construct_runtime`")
|
||||
.new("use `frame_system::Config` to set the `Block` type and delete this clause.
|
||||
It is planned to be removed in December 2023")
|
||||
.help_links(&["https://github.com/paritytech/substrate/pull/14437"])
|
||||
.span(where_section.span)
|
||||
.build(),
|
||||
)
|
||||
});
|
||||
|
||||
let res = quote!(
|
||||
#warning
|
||||
|
||||
#scrate_decl
|
||||
|
||||
// Prevent UncheckedExtrinsic to print unused warning.
|
||||
@@ -421,9 +431,6 @@ fn construct_runtime_final_expansion(
|
||||
#scrate::scale_info::TypeInfo
|
||||
)]
|
||||
pub struct #name;
|
||||
impl #scrate::sp_runtime::traits::GetNodeBlockType for #name {
|
||||
type NodeBlock = #node_block;
|
||||
}
|
||||
impl #scrate::sp_runtime::traits::GetRuntimeBlockType for #name {
|
||||
type RuntimeBlock = #block;
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ pub enum RuntimeDeclaration {
|
||||
#[derive(Debug)]
|
||||
pub struct ImplicitRuntimeDeclaration {
|
||||
pub name: Ident,
|
||||
pub where_section: WhereSection,
|
||||
pub where_section: Option<WhereSection>,
|
||||
pub pallets: Vec<PalletDeclaration>,
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ pub struct ImplicitRuntimeDeclaration {
|
||||
#[derive(Debug)]
|
||||
pub struct ExplicitRuntimeDeclaration {
|
||||
pub name: Ident,
|
||||
pub where_section: WhereSection,
|
||||
pub where_section: Option<WhereSection>,
|
||||
pub pallets: Vec<Pallet>,
|
||||
pub pallets_token: token::Brace,
|
||||
}
|
||||
@@ -90,7 +90,7 @@ impl Parse for RuntimeDeclaration {
|
||||
}
|
||||
|
||||
let name = input.parse::<syn::Ident>()?;
|
||||
let where_section = input.parse()?;
|
||||
let where_section = if input.peek(token::Where) { Some(input.parse()?) } else { None };
|
||||
let pallets =
|
||||
input.parse::<ext::Braces<ext::Punctuated<PalletDeclaration, Token![,]>>>()?;
|
||||
let pallets_token = pallets.token;
|
||||
@@ -122,6 +122,7 @@ impl Parse for RuntimeDeclaration {
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct WhereSection {
|
||||
pub span: Span,
|
||||
pub block: syn::TypePath,
|
||||
pub node_block: syn::TypePath,
|
||||
pub unchecked_extrinsic: syn::TypePath,
|
||||
@@ -130,6 +131,7 @@ pub struct WhereSection {
|
||||
impl Parse for WhereSection {
|
||||
fn parse(input: ParseStream) -> Result<Self> {
|
||||
input.parse::<token::Where>()?;
|
||||
|
||||
let mut definitions = Vec::new();
|
||||
while !input.peek(token::Brace) {
|
||||
let definition: WhereDefinition = input.parse()?;
|
||||
@@ -153,7 +155,7 @@ impl Parse for WhereSection {
|
||||
);
|
||||
return Err(Error::new(*kind_span, msg))
|
||||
}
|
||||
Ok(Self { block, node_block, unchecked_extrinsic })
|
||||
Ok(Self { span: input.span(), block, node_block, unchecked_extrinsic })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -856,7 +856,7 @@ pub fn storage_alias(_: TokenStream, input: TokenStream) -> TokenStream {
|
||||
/// type RuntimeOrigin = RuntimeOrigin;
|
||||
/// type OnSetCode = ();
|
||||
/// type PalletInfo = PalletInfo;
|
||||
/// type Header = Header;
|
||||
/// type Block = Block;
|
||||
/// // We decide to override this one.
|
||||
/// type AccountData = pallet_balances::AccountData<u64>;
|
||||
/// }
|
||||
@@ -902,7 +902,7 @@ pub fn storage_alias(_: TokenStream, input: TokenStream) -> TokenStream {
|
||||
/// type RuntimeOrigin = RuntimeOrigin;
|
||||
/// type OnSetCode = ();
|
||||
/// type PalletInfo = PalletInfo;
|
||||
/// type Header = Header;
|
||||
/// type Block = Block;
|
||||
/// type AccountData = pallet_balances::AccountData<u64>;
|
||||
/// type Version = <TestDefaultConfig as DefaultConfig>::Version;
|
||||
/// type BlockWeights = <TestDefaultConfig as DefaultConfig>::BlockWeights;
|
||||
@@ -1559,7 +1559,7 @@ pub fn unbounded(_: TokenStream, _: TokenStream) -> TokenStream {
|
||||
/// ```ignore
|
||||
/// #[pallet::storage]
|
||||
/// #[pallet::whitelist_storage]
|
||||
/// pub(super) type Number<T: Config> = StorageValue<_, T::BlockNumber, ValueQuery>;
|
||||
/// pub(super) type Number<T: Config> = StorageValue<_, frame_system::pallet_prelude::BlockNumberFor::<T>, ValueQuery>;
|
||||
/// ```
|
||||
///
|
||||
/// NOTE: As with all `pallet::*` attributes, this one _must_ be written as
|
||||
|
||||
@@ -75,7 +75,7 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
let frame_system = &def.frame_system;
|
||||
quote::quote! {
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::Hooks<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::Hooks<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause {}
|
||||
}
|
||||
} else {
|
||||
@@ -137,50 +137,50 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
#hooks_impl
|
||||
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::OnFinalize<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::OnFinalize<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause
|
||||
{
|
||||
fn on_finalize(n: <T as #frame_system::Config>::BlockNumber) {
|
||||
fn on_finalize(n: #frame_system::pallet_prelude::BlockNumberFor::<T>) {
|
||||
#frame_support::sp_tracing::enter_span!(
|
||||
#frame_support::sp_tracing::trace_span!("on_finalize")
|
||||
);
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::on_finalize(n)
|
||||
}
|
||||
}
|
||||
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::OnIdle<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::OnIdle<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause
|
||||
{
|
||||
fn on_idle(
|
||||
n: <T as #frame_system::Config>::BlockNumber,
|
||||
n: #frame_system::pallet_prelude::BlockNumberFor::<T>,
|
||||
remaining_weight: #frame_support::weights::Weight
|
||||
) -> #frame_support::weights::Weight {
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::on_idle(n, remaining_weight)
|
||||
}
|
||||
}
|
||||
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::OnInitialize<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::OnInitialize<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause
|
||||
{
|
||||
fn on_initialize(
|
||||
n: <T as #frame_system::Config>::BlockNumber
|
||||
n: #frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
) -> #frame_support::weights::Weight {
|
||||
#frame_support::sp_tracing::enter_span!(
|
||||
#frame_support::sp_tracing::trace_span!("on_initialize")
|
||||
);
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::on_initialize(n)
|
||||
}
|
||||
@@ -205,7 +205,7 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::on_runtime_upgrade()
|
||||
}
|
||||
@@ -215,7 +215,7 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
<
|
||||
Self
|
||||
as
|
||||
#frame_support::traits::Hooks<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::Hooks<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
>::pre_upgrade()
|
||||
}
|
||||
|
||||
@@ -226,19 +226,19 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
<
|
||||
Self
|
||||
as
|
||||
#frame_support::traits::Hooks<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::Hooks<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
>::post_upgrade(state)
|
||||
}
|
||||
}
|
||||
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::OffchainWorker<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::OffchainWorker<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause
|
||||
{
|
||||
fn offchain_worker(n: <T as #frame_system::Config>::BlockNumber) {
|
||||
fn offchain_worker(n: #frame_system::pallet_prelude::BlockNumberFor::<T>) {
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::offchain_worker(n)
|
||||
}
|
||||
@@ -253,7 +253,7 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
fn integrity_test() {
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::integrity_test()
|
||||
}
|
||||
@@ -262,17 +262,17 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
impl<#type_impl_gen>
|
||||
#frame_support::traits::TryState<<T as #frame_system::Config>::BlockNumber>
|
||||
#frame_support::traits::TryState<#frame_system::pallet_prelude::BlockNumberFor::<T>>
|
||||
for #pallet_ident<#type_use_gen> #where_clause
|
||||
{
|
||||
fn try_state(
|
||||
n: <T as #frame_system::Config>::BlockNumber,
|
||||
n: #frame_system::pallet_prelude::BlockNumberFor::<T>,
|
||||
_s: #frame_support::traits::TryStateSelect
|
||||
) -> Result<(), #frame_support::sp_runtime::TryRuntimeError> {
|
||||
#log_try_state
|
||||
<
|
||||
Self as #frame_support::traits::Hooks<
|
||||
<T as #frame_system::Config>::BlockNumber
|
||||
#frame_system::pallet_prelude::BlockNumberFor::<T>
|
||||
>
|
||||
>::try_state(n)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user