mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-22 19:41:07 +00:00
Allow pallet error enum variants to contain fields (#10242)
* Allow pallet errors to contain at most one field * Update docs on pallet::error * Reword documentation * cargo fmt * Introduce CompactPalletError trait and require #[pallet::error] fields to implement them * cargo fmt * Do not assume tuple variants * Add CompactPalletError derive macro * Check for error type compactness in construct_runtime * cargo fmt * Derive CompactPalletError instead of implementing it directly during macro expansion * Implement CompactPalletError on OptionBool instead of Option<bool> * Check for type idents instead of variant ident * Add doc comments for ErrorCompactnessTest * Add an trait implementation of ErrorCompactnessTest for () * Convert the error field of DispatchError to a 4-element byte array * Add static check for pallet error size * Rename to MAX_PALLET_ERROR_ENCODED_SIZE * Remove ErrorCompactnessTest trait * Remove check_compactness * Return only the most significant byte when constructing a custom InvalidTransaction * Rename CompactPalletError to PalletError * Use counter to generate unique idents for assert macros * Make declarative pallet macros compile with pallet error size checks * Remove unused doc comment * Try and fix build errors * Fix build errors * Add macro_use for some test modules * Test fix * Fix compilation errors * Remove unneeded #[macro_use] * Resolve import ambiguity * Make path to pallet Error enum more specific * Fix test expectation * Disambiguate imports * Fix test expectations * Revert appending pallet module name to path * Rename bags_list::list::Error to BagError * Fixes * Fixes * Fixes * Fix test expectations * Fix test expectation * Add more implementations for PalletError * Lift the 1-field requirement for nested pallet errors * Fix UI test expectation * Remove PalletError impl for OptionBool * Use saturating operations * cargo fmt * Delete obsolete test * Fix test expectation * Try and use assert macro in const context * Pull out the pallet error size check macro * Fix UI test for const assertion * cargo fmt * Apply clippy suggestion * Fix doc comment * Docs for create_tt_return_macro * Ensure TryInto is imported in earlier Rust editions * Apply suggestions from code review Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * Fix up comments and names * Implement PalletError for Never * cargo fmt * Don't compile example code * Bump API version for block builder * Factor in codec attributes while derving PalletError * Rename module and fix unit test * Add missing attribute * Check API version and convert ApplyExtrinsicResult accordingly * Rename BagError to ListError Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Use codec crate re-exported from frame support * Add links to types mentioned in doc comments Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * cargo fmt * cargo fmt * Re-add attribute for hidden docs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
@@ -28,9 +28,11 @@ mod dummy_part_checker;
|
||||
mod key_prefix;
|
||||
mod match_and_insert;
|
||||
mod pallet;
|
||||
mod pallet_error;
|
||||
mod partial_eq_no_bound;
|
||||
mod storage;
|
||||
mod transactional;
|
||||
mod tt_macro;
|
||||
|
||||
use proc_macro::TokenStream;
|
||||
use std::{cell::RefCell, str::FromStr};
|
||||
@@ -41,9 +43,9 @@ thread_local! {
|
||||
static COUNTER: RefCell<Counter> = RefCell::new(Counter(0));
|
||||
}
|
||||
|
||||
/// Counter to generate a relatively unique identifier for macros querying for the existence of
|
||||
/// pallet parts. This is necessary because declarative macros gets hoisted to the crate root,
|
||||
/// which shares the namespace with other pallets containing the very same query macros.
|
||||
/// Counter to generate a relatively unique identifier for macros. This is necessary because
|
||||
/// declarative macros gets hoisted to the crate root, which shares the namespace with other pallets
|
||||
/// containing the very same macros.
|
||||
struct Counter(u64);
|
||||
|
||||
impl Counter {
|
||||
@@ -562,3 +564,14 @@ pub fn __generate_dummy_part_checker(input: TokenStream) -> TokenStream {
|
||||
pub fn match_and_insert(input: TokenStream) -> TokenStream {
|
||||
match_and_insert::match_and_insert(input)
|
||||
}
|
||||
|
||||
#[proc_macro_derive(PalletError, attributes(codec))]
|
||||
pub fn derive_pallet_error(input: TokenStream) -> TokenStream {
|
||||
pallet_error::derive_pallet_error(input)
|
||||
}
|
||||
|
||||
/// Internal macro used by `frame_support` to create tt-call-compliant macros
|
||||
#[proc_macro]
|
||||
pub fn __create_tt_macro(input: TokenStream) -> TokenStream {
|
||||
tt_macro::create_tt_return_macro(input)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user