Feat suppert procedural (#7913)

* fix clippy replace clone with copy

* fix clippy warning pattern

* fix clippy warning replace into_iter with iter

* replace match with if let

* replace =0 with is_empty

* replace or with or_else

* replace vec! with Vec::new
This commit is contained in:
honeywest
2021-01-18 20:07:09 +08:00
committed by GitHub
parent ced107b355
commit 6ec0f64259
14 changed files with 67 additions and 73 deletions
@@ -27,7 +27,7 @@ pub fn expand_call(def: &mut Def) -> proc_macro2::TokenStream {
let type_impl_gen = &def.type_impl_generics(def.call.attr_span);
let type_decl_bounded_gen = &def.type_decl_bounded_generics(def.call.attr_span);
let type_use_gen = &def.type_use_generics(def.call.attr_span);
let call_ident = syn::Ident::new("Call", def.call.attr_span.clone());
let call_ident = syn::Ident::new("Call", def.call.attr_span);
let pallet_ident = &def.pallet_struct.pallet;
let where_clause = &def.call.where_clause;
@@ -174,7 +174,7 @@ impl CallDef {
helper::take_item_attrs(&mut method.attrs)?;
if call_var_attrs.len() != 1 {
let msg = if call_var_attrs.len() == 0 {
let msg = if call_var_attrs.is_empty() {
"Invalid pallet::call, require weight attribute i.e. `#[pallet::weight = $expr]`"
} else {
"Invalid pallet::call, too many weight attributes given"
@@ -255,7 +255,7 @@ pub fn replace_self_by_t(input: proc_macro2::TokenStream) -> proc_macro2::TokenS
).into(),
proc_macro2::TokenTree::Ident(ident) if ident == "Self" =>
proc_macro2::Ident::new("T", ident.span()).into(),
other @ _ => other
other => other
})
.collect()
}
@@ -294,7 +294,7 @@ impl ConfigDef {
return Err(syn::Error::new(item.generics.params[2].span(), msg));
}
let has_instance = if let Some(_) = item.generics.params.first() {
let has_instance = if item.generics.params.first().is_some() {
helper::check_config_def_gen(&item.generics, item.ident.span())?;
true
} else {
@@ -72,8 +72,8 @@ enum PalletEventAttr {
impl PalletEventAttr {
fn span(&self) -> proc_macro2::Span {
match self {
Self::Metadata { span, .. } => span.clone(),
Self::DepositEvent { span, .. } => span.clone(),
Self::Metadata { span, .. } => *span,
Self::DepositEvent { span, .. } => *span,
}
}
}
@@ -165,7 +165,7 @@ impl EventDef {
let event_attrs: Vec<PalletEventAttr> = helper::take_item_attrs(&mut item.attrs)?;
let attr_info = PalletEventAttrInfo::from_attrs(event_attrs)?;
let metadata = attr_info.metadata.unwrap_or_else(|| vec![]);
let metadata = attr_info.metadata.unwrap_or_else(Vec::new);
let deposit_event = attr_info.deposit_event;
if !matches!(item.vis, syn::Visibility::Public(_)) {
@@ -81,12 +81,12 @@ impl ExtraConstantsDef {
return Err(syn::Error::new(impl_item.span(), msg));
};
if method.sig.inputs.len() != 0 {
if !method.sig.inputs.is_empty() {
let msg = "Invalid pallet::extra_constants, method must have 0 args";
return Err(syn::Error::new(method.sig.span(), msg));
}
if method.sig.generics.params.len() != 0 {
if !method.sig.generics.params.is_empty() {
let msg = "Invalid pallet::extra_constants, method must have 0 generics";
return Err(syn::Error::new(method.sig.generics.params[0].span(), msg));
}
@@ -136,7 +136,7 @@ pub fn get_doc_literals(attrs: &Vec<syn::Attribute>) -> Vec<syn::Lit> {
.filter_map(|attr| {
if let Ok(syn::Meta::NameValue(meta)) = attr.parse_meta() {
if meta.path.get_ident().map_or(false, |ident| ident == "doc") {
Some(meta.lit.clone())
Some(meta.lit)
} else {
None
}
@@ -66,7 +66,7 @@ impl Def {
let frame_system = generate_crate_access_2018("frame-system")?;
let frame_support = generate_crate_access_2018("frame-support")?;
let item_span = item.span().clone();
let item_span = item.span();
let items = &mut item.content.as_mut()
.ok_or_else(|| {
let msg = "Invalid pallet definition, expected mod to be inlined.";
@@ -152,7 +152,7 @@ impl Def {
}
let def = Def {
item: item,
item,
config: config.ok_or_else(|| syn::Error::new(item_span, "Missing `#[pallet::config]`"))?,
pallet_struct: pallet_struct
.ok_or_else(|| syn::Error::new(item_span, "Missing `#[pallet::pallet]`"))?,
@@ -403,20 +403,20 @@ enum PalletAttr {
impl PalletAttr {
fn span(&self) -> proc_macro2::Span {
match self {
Self::Config(span) => span.clone(),
Self::Pallet(span) => span.clone(),
Self::Hooks(span) => span.clone(),
Self::Call(span) => span.clone(),
Self::Error(span) => span.clone(),
Self::Event(span) => span.clone(),
Self::Origin(span) => span.clone(),
Self::Inherent(span) => span.clone(),
Self::Storage(span) => span.clone(),
Self::GenesisConfig(span) => span.clone(),
Self::GenesisBuild(span) => span.clone(),
Self::ValidateUnsigned(span) => span.clone(),
Self::TypeValue(span) => span.clone(),
Self::ExtraConstants(span) => span.clone(),
Self::Config(span) => *span,
Self::Pallet(span) => *span,
Self::Hooks(span) => *span,
Self::Call(span) => *span,
Self::Error(span) => *span,
Self::Event(span) => *span,
Self::Origin(span) => *span,
Self::Inherent(span) => *span,
Self::Storage(span) => *span,
Self::GenesisConfig(span) => *span,
Self::GenesisBuild(span) => *span,
Self::ValidateUnsigned(span) => *span,
Self::TypeValue(span) => *span,
Self::ExtraConstants(span) => *span,
}
}
}
@@ -47,7 +47,7 @@ impl OriginDef {
};
let has_instance = generics.params.len() == 2;
let is_generic = generics.params.len() > 0;
let is_generic = !generics.params.is_empty();
let mut instances = vec![];
if let Some(u) = helper::check_type_def_optional_gen(&generics, item.span())? {
@@ -173,7 +173,7 @@ impl StorageDef {
value: retrieve_arg(&typ.path.segments[0], 5)?,
}
}
found @ _ => {
found => {
let msg = format!(
"Invalid pallet::storage, expected ident: `StorageValue` or \
`StorageMap` or `StorageDoubleMap` in order to expand metadata, found \
@@ -60,10 +60,10 @@ impl TypeValueDef {
}
if let Some(span) = item.sig.constness.as_ref().map(|t| t.span())
.or(item.sig.asyncness.as_ref().map(|t| t.span()))
.or(item.sig.unsafety.as_ref().map(|t| t.span()))
.or(item.sig.abi.as_ref().map(|t| t.span()))
.or(item.sig.variadic.as_ref().map(|t| t.span()))
.or_else(|| item.sig.asyncness.as_ref().map(|t| t.span()))
.or_else(|| item.sig.unsafety.as_ref().map(|t| t.span()))
.or_else(|| item.sig.abi.as_ref().map(|t| t.span()))
.or_else(|| item.sig.variadic.as_ref().map(|t| t.span()))
{
let msg = "Invalid pallet::type_value, unexpected token";
return Err(syn::Error::new(span, msg));