diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index dd41c3f6854d6..92c8026340bf4 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -288,56 +288,39 @@ pub trait OffchainWorker { impl OffchainWorker for () {} macro_rules! tuple_impl { - ($one:ident,) => { - impl> OnFinalize for ($one,) { - fn on_finalize(n: Number) { - $one::on_finalize(n); - } - } - impl> OnInitialize for ($one,) { - fn on_initialize(n: Number) { - $one::on_initialize(n); - } - } - impl> OffchainWorker for ($one,) { - fn generate_extrinsics(n: Number) { - $one::generate_extrinsics(n); - } - } - }; ($first:ident, $($rest:ident,)+) => { + tuple_impl!([$first] [$first] [$($rest)+]); + }; + ([$($direct:ident)+] [$($reverse:ident)+] []) => { impl< Number: Copy, - $first: OnFinalize, - $($rest: OnFinalize),+ - > OnFinalize for ($first, $($rest),+) { + $($direct: OnFinalize),+ + > OnFinalize for ($($direct),+,) { fn on_finalize(n: Number) { - $first::on_finalize(n); - $($rest::on_finalize(n);)+ + $($reverse::on_finalize(n);)+ } } impl< Number: Copy, - $first: OnInitialize, - $($rest: OnInitialize),+ - > OnInitialize for ($first, $($rest),+) { + $($direct: OnInitialize),+ + > OnInitialize for ($($direct),+,) { fn on_initialize(n: Number) { - $first::on_initialize(n); - $($rest::on_initialize(n);)+ + $($direct::on_initialize(n);)+ } } impl< Number: Copy, - $first: OffchainWorker, - $($rest: OffchainWorker),+ - > OffchainWorker for ($first, $($rest),+) { + $($direct: OffchainWorker),+ + > OffchainWorker for ($($direct),+,) { fn generate_extrinsics(n: Number) { - $first::generate_extrinsics(n); - $($rest::generate_extrinsics(n);)+ + $($direct::generate_extrinsics(n);)+ } } - tuple_impl!($($rest,)+); - } + }; + ([$($direct:ident)+] [$($reverse:ident)+] [$first:ident $($rest:ident)*]) => { + tuple_impl!([$($direct)+] [$($reverse)+] []); + tuple_impl!([$($direct)+ $first] [$first $($reverse)+] [$($rest)*]); + }; } #[allow(non_snake_case)] diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index 9fe26123ff43d..fac04de6e7f91 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -37,14 +37,14 @@ mod tests { use primitives::{twox_128, blake2_256, Blake2Hasher, ChangesTrieConfiguration, NeverNativeValue, NativeOrEncoded}; use node_primitives::{Hash, BlockNumber, AccountId}; - use runtime_primitives::traits::{Header as HeaderT, Hash as HashT}; - use runtime_primitives::{generic, generic::Era, ApplyOutcome, ApplyError, ApplyResult, Perbill}; + use runtime_primitives::traits::{Header as HeaderT, Hash as HashT, Digest, DigestItem}; + use runtime_primitives::{generic::Era, ApplyOutcome, ApplyError, ApplyResult, Perbill}; use {balances, indices, session, system, staking, consensus, timestamp, treasury, contract}; use contract::ContractAddressFor; use system::{EventRecord, Phase}; use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, - SystemConfig, GrandpaConfig, IndicesConfig, Event, Log}; + SystemConfig, GrandpaConfig, IndicesConfig, Event}; use wabt; use primitives::map; @@ -442,8 +442,10 @@ mod tests { ] ); - let digest = generic::Digest::::default(); - assert_eq!(Header::decode(&mut &block2.0[..]).unwrap().digest, digest); + // session change => consensus authorities change => authorities change digest item appears + let digest = Header::decode(&mut &block2.0[..]).unwrap().digest; + assert_eq!(digest.logs().len(), 1); + assert!(digest.logs()[0].as_authorities_change().is_some()); (block1, block2) } @@ -567,10 +569,6 @@ mod tests { phase: Phase::ApplyExtrinsic(2), event: Event::system(system::Event::ExtrinsicSuccess) }, - EventRecord { - phase: Phase::Finalization, - event: Event::session(session::RawEvent::NewSession(1)) - }, EventRecord { phase: Phase::Finalization, event: Event::treasury(treasury::RawEvent::Spending(0)) @@ -583,6 +581,10 @@ mod tests { phase: Phase::Finalization, event: Event::treasury(treasury::RawEvent::Rollover(0)) }, + EventRecord { + phase: Phase::Finalization, + event: Event::session(session::RawEvent::NewSession(1)) + }, ]); }); } diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index a2d9a310cb0f4..2adbdd0504a2a 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -58,8 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, - spec_version: 75, - impl_version: 75, + spec_version: 76, + impl_version: 76, apis: RUNTIME_API_VERSIONS, };