• Keith Yeung's avatar
    Allow pallet error enum variants to contain fields (#10242) · 208be869
    Keith Yeung authored
    
    
    * 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: default avatarBastian Köcher <[email protected]>
    
    * 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: default avatarKian Paimani <[email protected]>
    
    * Use codec crate re-exported from frame support
    
    * Add links to types mentioned in doc comments
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * cargo fmt
    
    * cargo fmt
    
    * Re-add attribute for hidden docs
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarKian Paimani <[email protected]>
    208be869