Ensure inherent are first (#8173)

* impl

* fix tests

* impl in execute_block

* fix tests

* add a test in frame-executive

* fix some panic warning

* use trait to get call from extrinsic

* remove unused

* fix test

* fix testing

* fix tests

* return index of extrinsic on error

* fix test

* Update primitives/inherents/src/lib.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* address comments

rename trait, and refactor

* refactor + doc improvment

* fix tests

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
Guillaume Thiolliere
2021-04-13 11:30:13 +02:00
committed by GitHub
parent 6679b88af8
commit a4ed9bb9b2
17 changed files with 427 additions and 61 deletions
@@ -167,6 +167,7 @@ fn construct_runtime_parsed(definition: RuntimeDefinition) -> Result<TokenStream
let metadata = decl_runtime_metadata(&name, pallets.iter(), &scrate, &unchecked_extrinsic);
let outer_config = decl_outer_config(&name, pallets.iter(), &scrate);
let inherent = decl_outer_inherent(
&name,
&block,
&unchecked_extrinsic,
pallets.iter(),
@@ -235,6 +236,7 @@ fn decl_validate_unsigned<'a>(
}
fn decl_outer_inherent<'a>(
runtime: &'a Ident,
block: &'a syn::TypePath,
unchecked_extrinsic: &'a syn::TypePath,
pallet_declarations: impl Iterator<Item = &'a Pallet>,
@@ -251,7 +253,8 @@ fn decl_outer_inherent<'a>(
#scrate::impl_outer_inherent!(
impl Inherents where
Block = #block,
UncheckedExtrinsic = #unchecked_extrinsic
UncheckedExtrinsic = #unchecked_extrinsic,
Runtime = #runtime,
{
#(#pallets_tokens)*
}