use custom ext::Opt for default_value in DeclStorageLine (#1722)

instead of ext::Seq
This commit is contained in:
thiolliere
2019-02-07 16:35:29 +01:00
committed by GitHub
parent 0da92bf114
commit 4792a3806c
6 changed files with 19 additions and 29 deletions
@@ -74,8 +74,7 @@ struct AddExtraGenesisLine {
pub extra_field: ext::Parens<Ident>,
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<DeclStorageDefault>,
pub default_value: ext::Opt<DeclStorageDefault>,
}
#[derive(Parse, ToTokens, Debug)]
@@ -91,8 +90,7 @@ struct DeclStorageLine {
pub build: Option<DeclStorageBuild>,
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<DeclStorageDefault>,
pub default_value: ext::Opt<DeclStorageDefault>,
}
@@ -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 )
})