• Kian Paimani's avatar
    Default Pallet Config Trait / derive_impl (#13454) · 263a5d6c
    Kian Paimani authored
    
    
    * first draft, probably won't work
    
    * first draft, probably won't work
    
    * good progress..
    
    * good milestone, still a lot to do.
    
    * EVERYTHING WORKS
    
    * Update frame/support/procedural/src/derive_impl.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/support/procedural/src/derive_impl.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * clean up + cargo fmt
    
    * import tokens WIP
    
    * export_tokens working with impl Trait
    
    * WIP / notes
    
    * use macro_magic 0.2.0's export_tokens to access foreign items
    
    * token importing working properly using macro_magic 0.2.5
    
    * combine_impls almost working
    
    * successfully get foreign path via macro_magic 0.2.6
    
    * combine_impls using implementing_type generics
    
    * working + clean up
    
    * more clean up
    
    * decrease rightwards drift and add docs to combine_impls
    
    * add support for macros to impl_item_ident in case we hit that
    
    * add docs for impl_item_ident method
    
    * fix no_std issues
    
    * re-export of macro_magic working in pallets 🎉
    
    * clean up + fully resolve no_std issue with macro_magic with v0.2.11
    
    * remove trait item code for different trait item types since this
    is now handled directly by combine_impls
    
    * clean up
    
    * remove dev comments
    
    * only generate default trait if #[pallet::default_trait] is attached
    
    * authorship and most other pallets now compiling
    
    * compiling 🎉
    
    * add check for more than two pallet attributes on Config trait
    
    * remove unused import in nomination-pool
    
    * clean up debug code
    
    * upgrade to macro_magic v0.2.12
    
    * add neater #[register_default_config(SomeIdent)] macro
    
    * really just a thin wrapper around #[export_tokens]
    
    * upgrade to macro_magic 0.3.1
    
    * rewrite parsing to be compatible with syn 2.x, compiling 🎉
    
    
    
    * remove unused keywords
    
    * macro stubs for the new pallet:: macros, preliminary docs
    
    * upgrade to macro_magic v0.3.2
    
    * rename register_default_config => register_default_impl
    
    * bump to macro_magic v0.3.3
    
    * custom disambiguation_path working as 2nd arg to derive_impl
    
    * overhaul docs
    
    * fixes, ident-style paths shortcut working
    
    * remove ident-style shortcut because it makes testing difficult
    
    * add passing UI tests for derive_impl
    
    * switch to `ForeignPath as DisambiguationPath` syntax + update docs
    
    * add UI test for bad foreign path
    
    * add UI test for bad disambiguation path
    
    * add UI test for missing disambiguation path
    
    * add UI test for attached to non impl
    
    * fix derive_impl_attr_args_parsing test
    
    * move tests to bottom
    
    * fix nightly issue
    
    * add doc notes on importing/re-exporting
    
    * remove explicit use of macro_magic::use_attr
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * use explicit macro_magic::use_attr
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * remove unneeded {}
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * remove unneeded collect
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * add docs for TestDefaultConfig
    
    * remove unneeded `#[export_tokens]` on `DefaultConfig`
    
    * add docs for auto-generated `DefaultConfig`
    
    * no need to clone
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * clean up combine_impls + compiling again
    
    * remove unused dependency
    
    * simplify struct definition
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * fix register_default_impl docs
    
    * reduce rightward drift / refactor
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * fix derive_impl after keith's changes
    
    * simplify disambiguation_path calculation
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * compiling again
    
    * simplify parsing of trait item
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * rename preludes => prelude
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * fix other places where we used preludes instead of prelude
    
    * fix indents
    
    * simplify PalletAttr parsing
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * go back to having no_default and constant as keywords
    
    * make it more clear that disambiguation_path is optional
    
    * make default_trait_items just a Vec instead of Option<Vec>
    
    * rename foreign_path => default_impl_path within substrate
    
    * fix docs
    
    * Change {} to ;
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * highlight full end-to-end example with link
    
    * add pallet-default-config-example, start by copying dev mode code
    
    * update dev-mode specific docs
    
    * use Person and Points instead of Dummy and Bar
    
    * add docs to example pallet
    
    * revert changes to pallets other than the default config example
    
    * fix outdated references to basic example pallet
    
    * re-order docs to be a bit more clear
    
    * better errors for extra attributes
    
    * add UI tests for duplicate/extra attributes on trait items
    
    * change `#[pallet::default_config]` to option on `#[pallet::config()]`
    
    * update UI tests
    * add UI test covering missing `#[pallet::config(with_default)]` when
      `#[pallet::no_default]` is used
    
    * add note about new optional conventions
    
    * improve docs about `DefaultConfig` and link to these from a few places
    
    * fix doc comment
    
    * fix old comment referencing `pallet::default_config`
    
    * use u32 instead of u64 for block number
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * use () instead of u32 for `AccountData`
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * use ConstU32<10> for BlockHashCount instead of ConstU64<10>
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * people are not dummies
    
    Co-authored-by: default avatarLiam Aharon <[email protected]>
    
    * fix wording
    
    Co-authored-by: default avatarJust van Stam <[email protected]>
    
    * Person => People and compiling again
    
    * add docs for `prelude` module in frame_system
    
    * update Cargo.lock
    
    * cleaner example
    
    * tweaks
    
    * update docs more
    
    * update docs more
    
    * update docs more
    
    * update docs more
    
    * fix ui tests
    
    * err
    
    * Update frame/support/test/tests/pallet_ui.rs
    
    * update ui tests
    
    ---------
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarSam Johnson <[email protected]>
    Co-authored-by: parity-processbot <>
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    Co-authored-by: default avatarLiam Aharon <[email protected]>
    Co-authored-by: default avatarJust van Stam <[email protected]>
    263a5d6c