diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index e4053bec71..4da496043f 100644 Binary files a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index fd250ec6b6..9cddd0f9b2 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -65,8 +65,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, - spec_version: 23, - impl_version: 23, + spec_version: 24, + impl_version: 24, apis: RUNTIME_API_VERSIONS, }; diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index bc3a36a394..63cb12b80d 100644 Binary files a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm and b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm differ diff --git a/substrate/srml/support/procedural/src/storage/mod.rs b/substrate/srml/support/procedural/src/storage/mod.rs index b3cf50ece0..b230b13402 100644 --- a/substrate/srml/support/procedural/src/storage/mod.rs +++ b/substrate/srml/support/procedural/src/storage/mod.rs @@ -74,8 +74,7 @@ struct AddExtraGenesisLine { pub extra_field: ext::Parens, pub coldot_token: Token![:], pub extra_type: syn::Type, - // FIXME #1570: use a custom ext::Option instead (syn option on '=' fails) - pub default_value: ext::Seq, + pub default_value: ext::Opt, } #[derive(Parse, ToTokens, Debug)] @@ -91,8 +90,7 @@ struct DeclStorageLine { pub build: Option, pub coldot_token: Token![:], pub storage_type: DeclStorageType, - // FIXME #1570: use a custom ext::Option instead (syn option on '=' fails) - pub default_value: ext::Seq, + pub default_value: ext::Opt, } diff --git a/substrate/srml/support/procedural/src/storage/transformation.rs b/substrate/srml/support/procedural/src/storage/transformation.rs index 9e6c49b454..3c1083569e 100644 --- a/substrate/srml/support/procedural/src/storage/transformation.rs +++ b/substrate/srml/support/procedural/src/storage/transformation.rs @@ -203,7 +203,7 @@ fn decl_store_extra_genesis( config_field.extend(quote!( pub #ident: #storage_type, )); opt_build = Some(build.as_ref().map(|b| &b.expr.content).map(|b|quote!( #b )) .unwrap_or_else(|| quote!( (|config: &GenesisConfig<#traitinstance>| config.#ident.clone()) ))); - let fielddefault = default_value.inner.get(0).as_ref().map(|d| &d.expr).map(|d| + let fielddefault = default_value.inner.as_ref().map(|d| &d.expr).map(|d| if type_infos.is_option { quote!( #d.unwrap_or_default() ) } else { @@ -270,7 +270,7 @@ fn decl_store_extra_genesis( genesis_extrafields.extend(quote!{ #attrs pub #extrafield: #extra_type, }); - let extra_default = default_value.inner.get(0).map(|d| &d.expr).map(|e| quote!{ #e }) + let extra_default = default_value.inner.as_ref().map(|d| &d.expr).map(|e| quote!{ #e }) .unwrap_or_else(|| quote!( Default::default() )); genesis_extrafields_default.extend(quote!{ #extrafield: #extra_default, @@ -403,7 +403,7 @@ fn decl_storage_items( let type_infos = get_type_infos(storage_type); let gettype = type_infos.full_type; - let fielddefault = default_value.inner.get(0).as_ref().map(|d| &d.expr).map(|d| quote!( #d )) + let fielddefault = default_value.inner.as_ref().map(|d| &d.expr).map(|d| quote!( #d )) .unwrap_or_else(|| quote!{ Default::default() }); let typ = type_infos.typ; @@ -643,7 +643,7 @@ fn store_functions_to_metadata ( #scrate::storage::generator::StorageFunctionModifier::Default } }; - let default = default_value.inner.get(0).as_ref().map(|d| &d.expr) + let default = default_value.inner.as_ref().map(|d| &d.expr) .map(|d| { quote!( #d ) }) diff --git a/substrate/srml/support/procedural/tools/src/syn_ext.rs b/substrate/srml/support/procedural/tools/src/syn_ext.rs index 3a93a5c533..80ae16e358 100644 --- a/substrate/srml/support/procedural/tools/src/syn_ext.rs +++ b/substrate/srml/support/procedural/tools/src/syn_ext.rs @@ -191,33 +191,25 @@ impl ToTokens for OuterAttributes { } #[derive(Debug)] -pub struct Seq

{ - pub inner: Vec

, +pub struct Opt

{ + pub inner: Option

, } -impl Parse for Seq

{ +impl Parse for Opt

{ // Note that it cost a double parsing (same as enum derive) fn parse(input: ParseStream) -> Result { - let mut inner = Vec::new(); - loop { - let fork = input.fork(); - let res: Result

= fork.parse(); - match res { - Ok(_item) => { - // move cursor - let item: P = input.parse().expect("Same parsing ran before"); - inner.push(item); - }, - Err(_e) => break, - } - } - Ok(Seq { inner }) + let inner = match input.fork().parse::

() { + Ok(_item) => Some(input.parse().expect("Same parsing ran before")), + Err(_e) => None, + }; + + Ok(Opt { inner }) } } -impl ToTokens for Seq

{ +impl ToTokens for Opt

{ fn to_tokens(&self, tokens: &mut T2) { - for p in self.inner.iter() { + if let Some(ref p) = self.inner { p.to_tokens(tokens); } }