* 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>
* Implement parsing for #[pallet::storage_name] on storage items
* Rename storage prefix when a #[pallet::storage_name] is supplied
* Fix test_storage_info
* Rename storage_name to storage_prefix
* Check for duplicates when renaming storage prefixes
* Allow only string literals for storage_prefix renames
* Use proper spans for attribute errors
* Check for valid identifiers when parsing storage prefix renames
* Allow additional trait bounds for constants
* Add ui test for constants with additional trait bounds
* Update trait constant ui test
* Import syn::Error
* Use reference instead of cloning
* Add extra invalid bound ui test
* Out or order valid bounds
* Fix ui test
* Fix ui test
* Apply review suggestion about error message
* make all extrinsics public so they are available from outside
* Impl
* fix
* more fix
* more pub
* few more
* merge fix
* fix ui test
* fix ui test
Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
* im-online: send heartbeats at a random period
* support: use permill to represent session progress
* im-online: increase probability of heartbeating with session progress
* babe, session: fix tests
* babe: fix test
* Remove unused event_metadata variable
* Eliminate mod_name and use pallet names to name enum variants
* Rename field name `pallet` to `path`
* Use only the pallet name to generate variant names
* Use new naming scheme for Event enum in sudo pallet tests
* Use new naming scheme for Event enum in offences pallet tests
* Use new naming scheme for Event enum in contracts pallet tests
* Use new naming scheme for Event enum in collective pallet tests
* Use new naming scheme for Event enum in bounties pallet tests
* Use new naming scheme for Event enum in balances pallet tests
* Use new naming scheme for Event enum in assets pallet tests
* Use new naming scheme for Event enum in frame support tests
* Use new naming scheme for Event enum in tips pallet tests
* Use new naming scheme for Event enum in transaction payment pallet tests
* Use new naming scheme for GenesisConfig fields in example pallet tests
* Use new naming scheme for GenesisConfig fields in elections pallet tests
* Use new naming scheme for Event enum in election provider multi-phase pallet tests
* Use new naming scheme for Event enum in elections phragmen pallet tests
* Use new naming scheme for GenesisConfig fields in chain spec
* Use new naming scheme for Event enum in staking pallet mock
* Use new naming scheme for GenesisConfig fields in node-template chain spec
* Use new naming scheme for GenesisConfig fields in node-testing chain spec
* Use new naming scheme for Event enum in node executor tests
* Use new naming scheme for GenesisConfig fields in transaction storage pallet mock
* Refactor match conditions
* Allow usage of path in construct_runtime!
* Fix whitespace
* Fix whitespace
* Make expand_runtime_metadata accept slice instead of Iterator
* Include Call and Event in construct_runtime for testing
* Migrate impl_outer_event to proc macro
* Fix integrity_test_works
* Update UI test expectations
* Factor in module path while generating enum variant or fn names
* Use ParseStream::lookahead for more helpful error messages
* Remove generating outer_event_metadata
* Ensure pallets with different paths but same last path segment can coexist
* Remove unnecessary generated function
* Migrate decl_outer_config to proc macro
* Add default_filter test for expand_outer_origin
* Allow crate, self and super keywords to appear in pallet path
* Add UI test for specifying empty pallet paths in construct_runtime
* implement max_values + storages info
* some formatting + doc
* sudo sanity check
* timestamp
* assets (not working)
* fix assets
* impl for proxy
* update balances
* rename StoragesInfo -> PalletStorageInfo
* merge both StorageInfoTrait and PalletStorageInfo
I think it is more future proof. In the future some storage could make
use of multiple prefix. Like one to store how much value has been
inserted, etc...
* Update frame/support/procedural/src/storage/parse.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Update frame/support/procedural/src/storage/storage_struct.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Fix max_size using hasher information
hasher now expose `max_len` which allows to computes their maximum len.
For hasher without concatenation, it is the size of the hash part,
for hasher with concatenation, it is the size of the hash part + max
encoded len of the key.
* fix tests
* fix ui tests
* Move `MaxBoundedLen` into its own crate (#8814)
* move MaxEncodedLen into its own crate
* remove MaxEncodedLen impl from frame-support
* add to assets and balances
* try more fixes
* fix compile
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* nits
* fix compile
* line width
* fix max-values-macro merge
* Add some derive, needed for test and other purpose
* use weak bounded vec in some cases
* Update lib.rs
* move max-encoded-len crate
* fix
* remove app crypto for now
* width
* Revert "remove app crypto for now"
This reverts commit 73623e9933d50648e0e7fe90b6171a8e45d7f5a2.
* unused variable
* more unused variables
* more fixes
* Add #[max_encoded_len_crate(...)] helper attribute
The purpose of this attribute is to reduce the surface area of
max_encoded_len changes. Crates deriving `MaxEncodedLen` do not
need to add it to `Cargo.toml`; they can instead just do
```rust
\#[derive(Encode, MaxEncodedLen)]
\#[max_encoded_len_crate(frame_support::max_encoded_len)]
struct Example;
```
* fix a ui test
* use #[max_encoded_len_crate(...)] helper in app_crypto
* remove max_encoded_len import where not necessary
* update lockfile
* fix ui test
* ui
* newline
* fix merge
* try fix ui again
* Update max-encoded-len/derive/src/lib.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* extract generate_crate_access_2018
* Update lib.rs
* compiler isnt smart enough
Co-authored-by: thiolliere <gui.thiolliere@gmail.com>
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Peter Goodspeed-Niklaus <peter.r.goodspeedniklaus@gmail.com>
* CI: revert me
* fix stderr
* CI: revert me
* typo
* more stderr fixes
* Revert "CI: revert me"
This reverts commit 5f47effc4965fa5c0c2a6ed92e434a6adb6b1dce.
* Revert "CI: revert me"
This reverts commit 7f785660c797b703dd36272cbe313056dd7a1858.
* Make #[pallet::hooks] optional
* Make #[pallet::call] optional
* Remove unused imports
* Update UI test expectations
* Update UI test expectations
* Remove unnecessary HooksDef::empty method
* Remove unnecessary CallDef::empty method
* Clarify what would happen when no call or hooks are specified in a pallet
* implement max_values + storages info
* some formatting + doc
* rename StoragesInfo -> PalletStorageInfo
* merge both StorageInfoTrait and PalletStorageInfo
I think it is more future proof. In the future some storage could make
use of multiple prefix. Like one to store how much value has been
inserted, etc...
* Update frame/support/procedural/src/storage/parse.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Update frame/support/procedural/src/storage/storage_struct.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Fix max_size using hasher information
hasher now expose `max_len` which allows to computes their maximum len.
For hasher without concatenation, it is the size of the hash part,
for hasher with concatenation, it is the size of the hash part + max
encoded len of the key.
* fix tests
* fix ui tests
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Use StorageNMap for Approvals in assets pallet
* Use EncodeLike on HashKeyPrefix trait bounds
* Add comments clarifying AccountId roles
* Properly document the keys in the Approvals storage
* Fix line width
* Implement StorageNMap
* Change copyright date to 2021
* Rewrite keys to use impl_for_tuples instead of recursion
* Implement prefix iteration on StorageNMap
* Implement EncodeLike for key arguments
* Rename KeyGenerator::Arg to KeyGenerator::KArg
* Support StorageNMap in decl_storage and #[pallet::storage] macros
* Use StorageNMap in assets pallet
* Support migrate_keys in StorageNMap
* Reduce line characters on select files
* Refactor crate imports in decl_storage macros
* Some more line char reductions and doc comment update
* Update UI test expectations
* Revert whitespace changes to untouched files
* Generate Key struct instead of a 1-tuple when only 1 pair of key and hasher is provided
* Revert formatting changes to unrelated files
* Introduce KeyGeneratorInner
* Add tests for StorageNMap in FRAMEv2 pallet macro
* Small fixes to unit tests for StorageNMap
* Bump runtime metadata version
* Remove unused import
* Update tests to use runtime metadata v13
* Introduce and use EncodeLikeTuple as a trait bound for KArg
* Add some rustdocs
* Revert usage of StorageNMap in assets pallet
* Make use of ext::PunctuatedTrailing
* Add rustdoc for final_hash
* Fix StorageNMap proc macro expansions for single key cases
* Create associated const in KeyGenerator for hasher metadata
* Refactor code according to comments from Basti
* Add module docs for generator/nmap.rs
* Re-export storage::Key as NMapKey in pallet prelude
* Seal the EncodeLikeTuple trait
* Extract sealing code out of key.rs
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* requiring users to maintain an unchecked invariant is unsafe
* relax trait restrictions on BoundedVec<T, S>
A normal `Vec<T>` can do many things without any particular trait
bounds on `T`. This commit relaxes the bounds on `BoundedVec<T, S>`
to give it similar capabilities.
* Add `BoundedBTreeMap` to `frame_support::storage`
Part of https://github.com/paritytech/substrate/issues/8719.
* max_encoded_len will never encode length > bound
* requiring users to maintain an unchecked invariant is unsafe
* only impl debug when std
* add some marker traits
* add tests
* implement BoundedEncodedLen
* update header
* update imports
* use impl_for_tuples instead of a custom macro
* remove redundant where clause
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* impl for Compact<T>
* impl BoundedEncodedLen for BoundedVec (#8727)
* impl BoundedEncodedLen for bool
* explicitly implement BoundedEncodedLen for each Compact form
Turns out that u16 doesn't play nicely with the pattern; those values
take two extra bytes, where all other cases take one. :(
* rename BoundedEncodedLen -> MaxEncodedLen
* add tests of compact encoded length
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Lol
* Yeah
* Moare
* adaasda
* Convert AURA to new pallet macro
* AURA: Switch to `CurrentSlot` instead of `LastTimestamp`
This switches AURA to use `CurrentSlot` instead of `LastTimestamp`.
* Add missing file
* Update frame/aura/src/migrations.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Remove the runtime side provide inherent code
* Use correct weight
* Add TODO
* Remove the Inherent from AURA
* 🤦
* Remove unused stuff
* Update primitives authorship
* Fix babe inherent data provider
* Fix consensus-uncles
* Fix BABE
* Do some further changes to authorship primitives... :D
* More work
* Make it compile the happy path
* Make it async!
* Take hash
* More stuff
* Hacks
* Revert "Hacks"
This reverts commit cfffad88668cfdebf632a59c4fbfada001ef8251.
* Fix
* Make `execute_block` return the final block header
* Move Aura digest stuff
* Make it possible to disable equivocation checking
* Fix fix fix
* Some refactorings
* Comment
* Fixes fixes fixes
* More cleanups
* Some love
* Better love
* Make slot duration being exposed as `Duration` to the outside
* Some slot info love
* Add `build_aura_worker` utility function
* Copy copy copy
* Some stuff
* Start fixing pow
* Fix pow
* Remove some bounds
* More work
* Make grandpa work
* Make slots use `async_trait`
* Introduce `SharedData`
* Add test and fix bugs
* Switch to `SharedData`
* Make grandpa tests working
* More Babe work
* Make grandpa work
* Introduce `SharedData`
* Add test and fix bugs
* Switch to `SharedData`
* Make grandpa tests working
* More Babe work
* Make it async
* Fix fix
* Use `async_trait` in sc-consensus-slots
This makes the code a little bit easier to read and also expresses that
there can always only be one call at a time to `on_slot`.
* Make grandpa tests compile
* More Babe tests work
* Fix network test
* Start fixing service test
* Finish service-test
* Fix sc-consensus-aura
* Fix fix fix
* More fixes
* Make everything compile *yeah*
* Make manual-seal compile
* More fixes
* Start fixing Aura
* Fix Aura tests
* Fix Babe tests
* Make everything compile
* Move code around and switch to async_trait
* Fix Babe
* Docs docs docs
* Move to FRAME
* Fix fix fix
* Make everything compile
* Last cleanups
* Fix integration test
* Change slot usage of the timestamp
* We really need to switch to `impl-trait-for-tuples`
* Update primitives/inherents/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Update primitives/inherents/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Update primitives/inherents/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Some extra logging
* Remove dbg!
* Update primitives/consensus/common/src/import_queue/basic_queue.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>