mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-21 19:05:41 +00:00
Emit error when construct_runtime imports a non-existent pallet part (#8949)
* Emit error when construct_runtime imports a non-existent Call part * Reword and display pallet name when emitting part not found error * Migrate decl_outer_dispatch to a proc macro * Rename calls.rs to call.rs * Create new construct_runtime_v2 macro * Add UI test for importing non-existent call part in construct_runtime * Emit error when construct_runtime imports a non-existent Config part * Emit error when construct_runtime imports a non-existent Event part * Migrate decl_outer_inherent to a proc macro * Emit error when construct_runtime imports a non-existent Inherent part * Migrate decl_outer_validate_unsigned to a proc macro * Emit error when construct_runtime imports a non-existent ValidateUnsigned part * impl for old macro * fix line width * add doc * hide macroes and use unique counter everywhere * Remove construct_runtime_v2 * Encapsulate pallet part check macros in a module * Fix macro definitions in dummy part checker * Tag ProvideInherent impl with #[pallet::inherent] properly for authorship pallet * Remove Call part from pallets that do not define it * Add Call part unit tests * Remove undefined Call part import from offences pallet * Add tests for expand_outer_inherent * Remove Call part from pallets that do not define them * Remove Call part imports from pallets that do not have it defined * Remove Call part import of the offences pallet from grandpa pallet mocks * Update frame/support/test/tests/pallet.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Remove Call part imports for pallets that do not define them * Move inherent tests to inherent_expand * Add unit tests for expand_outer_validate_unsigned * Add newline at the end of file * fix ui test * Small prayer to RNGsus for fixing CI * Remove Call part from construct_runtime for randomness collective flip pallet * Remove Call part import for randomness collective flip pallet * Summon Laplace's demon instead of praying to RNGsus * Update test expectations * fix ui test and make sure it's flaky * Revert "fix ui test and make sure it's flaky" This reverts commit 362b6881389c911ef8d9ef85d71c9463f5694b20. * Comment out test instead of putting it in conditional compilation * Update UI test expectations * Update UI test expectations * Emit error when construct_runtime imports a non-existent Origin part Co-authored-by: thiolliere <gui.thiolliere@gmail.com> Co-authored-by: Denis P <denis.pisarev@parity.io>
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
|
||||
use crate::pallet::Def;
|
||||
use frame_support_procedural_tools::clean_type_string;
|
||||
use crate::COUNTER;
|
||||
use syn::spanned::Spanned;
|
||||
|
||||
/// * Generate enum call and implement various trait on it.
|
||||
@@ -31,7 +32,7 @@ pub fn expand_call(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
|
||||
(span, where_clause, methods, docs)
|
||||
}
|
||||
None => (def.pallet_struct.attr_span, None, Vec::new(), Vec::new()),
|
||||
None => (def.item.span(), None, Vec::new(), Vec::new()),
|
||||
};
|
||||
let frame_support = &def.frame_support;
|
||||
let frame_system = &def.frame_system;
|
||||
@@ -89,7 +90,37 @@ pub fn expand_call(def: &mut Def) -> proc_macro2::TokenStream {
|
||||
&docs[..]
|
||||
};
|
||||
|
||||
let maybe_compile_error = if def.call.is_none() {
|
||||
quote::quote!{
|
||||
compile_error!(concat!(
|
||||
"`",
|
||||
stringify!($pallet_name),
|
||||
"` does not have #[pallet::call] defined, perhaps you should remove `Call` from \
|
||||
construct_runtime?",
|
||||
));
|
||||
}
|
||||
} else {
|
||||
proc_macro2::TokenStream::new()
|
||||
};
|
||||
|
||||
let count = COUNTER.with(|counter| counter.borrow_mut().inc());
|
||||
let macro_ident = syn::Ident::new(&format!("__is_call_part_defined_{}", count), span);
|
||||
|
||||
quote::quote_spanned!(span =>
|
||||
#[doc(hidden)]
|
||||
pub mod __substrate_call_check {
|
||||
#[macro_export]
|
||||
#[doc(hidden)]
|
||||
macro_rules! #macro_ident {
|
||||
($pallet_name:ident) => {
|
||||
#maybe_compile_error
|
||||
};
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
pub use #macro_ident as is_call_part_defined;
|
||||
}
|
||||
|
||||
#( #[doc = #docs] )*
|
||||
#[derive(
|
||||
#frame_support::RuntimeDebugNoBound,
|
||||
|
||||
Reference in New Issue
Block a user