From d9363bbb0ed01f39e8b4d74512276bf16d28138e Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Sat, 18 Sep 2021 00:49:40 -0400 Subject: [PATCH 01/12] Rebased with master. Resolved merge conflict in frame/support/test/tests/pallet.rs --- frame/support/test/tests/pallet.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frame/support/test/tests/pallet.rs b/frame/support/test/tests/pallet.rs index 25fc2d46d2560..2cdb41db9c86a 100644 --- a/frame/support/test/tests/pallet.rs +++ b/frame/support/test/tests/pallet.rs @@ -146,6 +146,12 @@ pub mod pallet { fn some_extra_extra() -> T::AccountId { SomeType1.into() } + + #[pallet::constant_name(SomeExtraRename)] + /// Some doc + fn some_extra_rename() -> T::AccountId { + SomeType3.into() + } } #[pallet::pallet] @@ -1220,6 +1226,12 @@ fn metadata() { value: vec![0, 0, 0, 0, 0, 0, 0, 0], docs: vec![" Some doc"], }, + PalletConstantMetadata { + name: "SomeExtraRename", + ty: meta_type::(), + value: vec![0, 0, 0, 0, 0, 0, 0, 0], + docs: vec![" Some doc"], + }, ], error: Some(PalletErrorMetadata { ty: meta_type::>() }), }, From d6ec83e18d963aa2174b20a6cc34d80129147796 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Sat, 18 Sep 2021 12:30:39 -0400 Subject: [PATCH 02/12] Switching Account ID to SomeType1, as SomeType3 was giving me conversion error. --- frame/support/test/tests/pallet.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/support/test/tests/pallet.rs b/frame/support/test/tests/pallet.rs index 2cdb41db9c86a..12f653d17ecb7 100644 --- a/frame/support/test/tests/pallet.rs +++ b/frame/support/test/tests/pallet.rs @@ -150,7 +150,7 @@ pub mod pallet { #[pallet::constant_name(SomeExtraRename)] /// Some doc fn some_extra_rename() -> T::AccountId { - SomeType3.into() + SomeType1.into() } } From e7c5a635f4451109eb9d81f546ef1f0741df16bc Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Sat, 18 Sep 2021 12:50:44 -0400 Subject: [PATCH 03/12] Wrong indent config. Fixed. --- frame/support/test/tests/pallet.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/frame/support/test/tests/pallet.rs b/frame/support/test/tests/pallet.rs index 12f653d17ecb7..6bf8d578e8c59 100644 --- a/frame/support/test/tests/pallet.rs +++ b/frame/support/test/tests/pallet.rs @@ -147,11 +147,11 @@ pub mod pallet { SomeType1.into() } - #[pallet::constant_name(SomeExtraRename)] - /// Some doc - fn some_extra_rename() -> T::AccountId { - SomeType1.into() - } + #[pallet::constant_name(SomeExtraRename)] + /// Some doc + fn some_extra_rename() -> T::AccountId { + SomeType1.into() + } } #[pallet::pallet] @@ -1226,12 +1226,12 @@ fn metadata() { value: vec![0, 0, 0, 0, 0, 0, 0, 0], docs: vec![" Some doc"], }, - PalletConstantMetadata { - name: "SomeExtraRename", - ty: meta_type::(), - value: vec![0, 0, 0, 0, 0, 0, 0, 0], - docs: vec![" Some doc"], - }, + PalletConstantMetadata { + name: "SomeExtraRename", + ty: meta_type::(), + value: vec![0, 0, 0, 0, 0, 0, 0, 0], + docs: vec![" Some doc"], + }, ], error: Some(PalletErrorMetadata { ty: meta_type::>() }), }, From 60edcacf46603fa9e46a0c82a08dc57d9ba8cab9 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Sat, 18 Sep 2021 14:16:07 -0400 Subject: [PATCH 04/12] These tabs look fine locally, but look different on Github. Trying to get the style config right. --- frame/support/test/tests/pallet.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/frame/support/test/tests/pallet.rs b/frame/support/test/tests/pallet.rs index 6bf8d578e8c59..64be4bd043e20 100644 --- a/frame/support/test/tests/pallet.rs +++ b/frame/support/test/tests/pallet.rs @@ -147,11 +147,11 @@ pub mod pallet { SomeType1.into() } - #[pallet::constant_name(SomeExtraRename)] - /// Some doc - fn some_extra_rename() -> T::AccountId { - SomeType1.into() - } + #[pallet::constant_name(SomeExtraRename)] + /// Some doc + fn some_extra_rename() -> T::AccountId { + SomeType1.into() + } } #[pallet::pallet] @@ -1226,12 +1226,12 @@ fn metadata() { value: vec![0, 0, 0, 0, 0, 0, 0, 0], docs: vec![" Some doc"], }, - PalletConstantMetadata { - name: "SomeExtraRename", - ty: meta_type::(), - value: vec![0, 0, 0, 0, 0, 0, 0, 0], - docs: vec![" Some doc"], - }, + PalletConstantMetadata { + name: "SomeExtraRename", + ty: meta_type::(), + value: vec![0, 0, 0, 0, 0, 0, 0, 0], + docs: vec![" Some doc"], + }, ], error: Some(PalletErrorMetadata { ty: meta_type::>() }), }, From 275b2a180198c3536956ffd4f00868e2c4531125 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Tue, 21 Sep 2021 12:37:31 -0400 Subject: [PATCH 05/12] Parsing pallet::constant_name. Passing unit tests, which is confusing because I didn't change `ident` in the ExtraConstantDef initialization. --- .../src/pallet/parse/extra_constants.rs | 42 ++++++++++++++++++- .../procedural/src/pallet/parse/helper.rs | 6 +++ frame/support/test/tests/pallet.rs | 2 +- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index c1324df6c22f1..fbe473141153c 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -28,6 +28,7 @@ mod keyword { syn::custom_keyword!(compact); syn::custom_keyword!(T); syn::custom_keyword!(pallet); + syn::custom_keyword!(constant_name); } /// Definition of extra constants typically `impl Pallet { ... }` @@ -52,12 +53,36 @@ pub struct ExtraConstantDef { pub doc: Vec, } +/// Attributes for functions in extra_constants impl block. +/// Parse for `#[pallet::constant_name(ConstantName)]` +pub struct ExtraConstAttr { + constant_name: syn::Ident, +} + +impl syn::parse::Parse for ExtraConstAttr { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + input.parse::()?; + let content; + syn::bracketed!(content in input); + content.parse::()?; + content.parse::()?; + content.parse::()?; + + let constant_name; + syn::parenthesized!(constant_name in content); + Ok(ExtraConstAttr { constant_name: constant_name.parse::()? }) + } +} + impl ExtraConstantsDef { pub fn try_from(index: usize, item: &mut syn::Item) -> syn::Result { let item = if let syn::Item::Impl(item) = item { item } else { - return Err(syn::Error::new(item.span(), "Invalid pallet::call, expected item impl")) + return Err(syn::Error::new( + item.span(), + "Invalid pallet::extra_constants, expected item impl", + )) }; let mut instances = vec![]; @@ -94,6 +119,20 @@ impl ExtraConstantsDef { return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)) } + // parse constant_name + let mut call_var_attrs: Vec = helper::take_item_pallet_attrs(method)?; + + // if call_var_attrs.len() > 1 { + // let msg = "Invalid attribute in pallet::constant_name, only one attribute is expected"; + // return Err(syn::Error::new(call_var_attrs[1].constant_name.span(), msg)) + // } + + // let constant_name = if call_var_attrs.len() == 1 { + // call_var_attrs.pop().unwrap().constant_name + // } else { + // method.sig.ident.clone() + // }; + let type_ = match &method.sig.output { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; @@ -104,6 +143,7 @@ impl ExtraConstantsDef { extra_constants.push(ExtraConstantDef { ident: method.sig.ident.clone(), + // ident: constant_name, type_, doc: get_doc_literals(&method.attrs), }); diff --git a/frame/support/procedural/src/pallet/parse/helper.rs b/frame/support/procedural/src/pallet/parse/helper.rs index 2590e86b58b0e..f5a7dc233cacb 100644 --- a/frame/support/procedural/src/pallet/parse/helper.rs +++ b/frame/support/procedural/src/pallet/parse/helper.rs @@ -139,6 +139,12 @@ impl MutItemAttrs for syn::ItemMod { } } +impl MutItemAttrs for syn::ImplItemMethod { + fn mut_item_attrs(&mut self) -> Option<&mut Vec> { + Some(&mut self.attrs) + } +} + /// Parse for `()` struct Unit; impl syn::parse::Parse for Unit { diff --git a/frame/support/test/tests/pallet.rs b/frame/support/test/tests/pallet.rs index 64be4bd043e20..dc72be3ebdd49 100644 --- a/frame/support/test/tests/pallet.rs +++ b/frame/support/test/tests/pallet.rs @@ -147,8 +147,8 @@ pub mod pallet { SomeType1.into() } - #[pallet::constant_name(SomeExtraRename)] /// Some doc + #[pallet::constant_name(SomeExtraRename)] fn some_extra_rename() -> T::AccountId { SomeType1.into() } From 98043ff1f5d8fcd60968bdc8cecedbafd2a356f2 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Wed, 22 Sep 2021 19:28:34 -0400 Subject: [PATCH 06/12] Finalized parsing of extra constant name by adding optional metadata field. Added expansion logic that replaces respective `idents` where they exist. --- .../procedural/src/pallet/expand/constants.rs | 12 ++++- .../src/pallet/parse/extra_constants.rs | 44 ++++++++++--------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/frame/support/procedural/src/pallet/expand/constants.rs b/frame/support/procedural/src/pallet/expand/constants.rs index db47bf552ac16..91680fef38433 100644 --- a/frame/support/procedural/src/pallet/expand/constants.rs +++ b/frame/support/procedural/src/pallet/expand/constants.rs @@ -26,6 +26,8 @@ struct ConstDef { pub doc: Vec, /// default_byte implementation pub default_byte_impl: proc_macro2::TokenStream, + /// Constant name for Metadata (optional) + pub metadata_name: Option, } /// @@ -54,6 +56,7 @@ pub fn expand_constants(def: &mut Def) -> proc_macro2::TokenStream { #frame_support::traits::Get<#const_type>>::get(); #frame_support::codec::Encode::encode(&value) ), + metadata_name: None, } }); @@ -68,13 +71,20 @@ pub fn expand_constants(def: &mut Def) -> proc_macro2::TokenStream { let value = >::#ident(); #frame_support::codec::Encode::encode(&value) ), + metadata_name: const_.metadata_name.clone(), } }); let consts = config_consts.chain(extra_consts).map(|const_| { let const_type = &const_.type_; let ident = &const_.ident; - let ident_str = format!("{}", ident); + let metadata_name = &const_.metadata_name; + let ident_str = if let Some(metadata_ident) = metadata_name { + format!("{}", metadata_ident) + } else { + format!("{}", ident) + }; + let doc = const_.doc.clone().into_iter(); let default_byte_impl = &const_.default_byte_impl; diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index fbe473141153c..d9bca12fde178 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -51,12 +51,14 @@ pub struct ExtraConstantDef { pub type_: syn::Type, /// The doc associated pub doc: Vec, + /// Optional MetaData Name + pub metadata_name: Option, } /// Attributes for functions in extra_constants impl block. /// Parse for `#[pallet::constant_name(ConstantName)]` pub struct ExtraConstAttr { - constant_name: syn::Ident, + metadata_name: syn::Ident, } impl syn::parse::Parse for ExtraConstAttr { @@ -68,9 +70,9 @@ impl syn::parse::Parse for ExtraConstAttr { content.parse::()?; content.parse::()?; - let constant_name; - syn::parenthesized!(constant_name in content); - Ok(ExtraConstAttr { constant_name: constant_name.parse::()? }) + let metadata_name; + syn::parenthesized!(metadata_name in content); + Ok(ExtraConstAttr { metadata_name: metadata_name.parse::()? }) } } @@ -119,33 +121,33 @@ impl ExtraConstantsDef { return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)) } - // parse constant_name - let mut call_var_attrs: Vec = helper::take_item_pallet_attrs(method)?; - - // if call_var_attrs.len() > 1 { - // let msg = "Invalid attribute in pallet::constant_name, only one attribute is expected"; - // return Err(syn::Error::new(call_var_attrs[1].constant_name.span(), msg)) - // } - - // let constant_name = if call_var_attrs.len() == 1 { - // call_var_attrs.pop().unwrap().constant_name - // } else { - // method.sig.ident.clone() - // }; - let type_ = match &method.sig.output { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; - return Err(syn::Error::new(method.span(), msg)) - }, + return Err(syn::Error::new(method.span(), msg)); + } syn::ReturnType::Type(_, type_) => *type_.clone(), }; + // parse metadata_name + let mut extra_constant_attrs: Vec = helper::take_item_pallet_attrs(method)?; + + if extra_constant_attrs.len() > 1 { + let msg = "Invalid attribute in pallet::constant_name, only one attribute is expected"; + return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)) + } + + let metadata_name = if extra_constant_attrs.len() == 1 { + Some(extra_constant_attrs.pop().unwrap().metadata_name) + } else { + None + }; + extra_constants.push(ExtraConstantDef { ident: method.sig.ident.clone(), - // ident: constant_name, type_, doc: get_doc_literals(&method.attrs), + metadata_name, }); } From e0b10eb600e3bcb0f843cdbdff2e84fc2fb0cb80 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Wed, 22 Sep 2021 19:32:50 -0400 Subject: [PATCH 07/12] Erasing this to try to keep the format the same across the source code. --- frame/support/procedural/src/pallet/parse/extra_constants.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index d9bca12fde178..6fdc1e3e8496f 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -124,7 +124,7 @@ impl ExtraConstantsDef { let type_ = match &method.sig.output { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; - return Err(syn::Error::new(method.span(), msg)); + return Err(syn::Error::new(method.span(), msg)) } syn::ReturnType::Type(_, type_) => *type_.clone(), }; From e6e4e55ee4b01aee00a7a4377defb240c6f0210a Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Wed, 22 Sep 2021 21:13:52 -0400 Subject: [PATCH 08/12] Another formatting change for consistency. --- frame/support/procedural/src/pallet/parse/extra_constants.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index 6fdc1e3e8496f..8ef81033c4d0a 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -125,7 +125,7 @@ impl ExtraConstantsDef { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; return Err(syn::Error::new(method.span(), msg)) - } + }, syn::ReturnType::Type(_, type_) => *type_.clone(), }; From 3b6ef1cde69f5032e89da4be9d991c12cc522244 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Thu, 23 Sep 2021 13:48:19 -0400 Subject: [PATCH 09/12] Update frame/support/procedural/src/pallet/expand/constants.rs strictly more idiomatic. Co-authored-by: Guillaume Thiolliere --- frame/support/procedural/src/pallet/expand/constants.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/frame/support/procedural/src/pallet/expand/constants.rs b/frame/support/procedural/src/pallet/expand/constants.rs index 91680fef38433..0cbb137f9fcb6 100644 --- a/frame/support/procedural/src/pallet/expand/constants.rs +++ b/frame/support/procedural/src/pallet/expand/constants.rs @@ -78,12 +78,7 @@ pub fn expand_constants(def: &mut Def) -> proc_macro2::TokenStream { let consts = config_consts.chain(extra_consts).map(|const_| { let const_type = &const_.type_; let ident = &const_.ident; - let metadata_name = &const_.metadata_name; - let ident_str = if let Some(metadata_ident) = metadata_name { - format!("{}", metadata_ident) - } else { - format!("{}", ident) - }; + let ident_str = format!("{}", const_.metadata_name.unwrap_or(const_.ident)); let doc = const_.doc.clone().into_iter(); let default_byte_impl = &const_.default_byte_impl; From bee44a5fc60cbe642dc385528d4dad2a4c35ae06 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Thu, 23 Sep 2021 14:05:30 -0400 Subject: [PATCH 10/12] Update frame/support/procedural/src/pallet/parse/extra_constants.rs strictly idiomatic change. Co-authored-by: Guillaume Thiolliere --- .../support/procedural/src/pallet/parse/extra_constants.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index 8ef81033c4d0a..a4ce6a117ee82 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -137,11 +137,7 @@ impl ExtraConstantsDef { return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)) } - let metadata_name = if extra_constant_attrs.len() == 1 { - Some(extra_constant_attrs.pop().unwrap().metadata_name) - } else { - None - }; + let metadata_name = extra_constant_attrs.pop().map(|attr| attr.metadata_name); extra_constants.push(ExtraConstantDef { ident: method.sig.ident.clone(), From 401125cf208b8a5bf400ec256a2e8f04dcc541dd Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Thu, 7 Oct 2021 15:33:19 -0400 Subject: [PATCH 11/12] Fixing formatting and CI warnings. --- .../procedural/src/pallet/expand/constants.rs | 1 - .../src/pallet/parse/extra_constants.rs | 24 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/frame/support/procedural/src/pallet/expand/constants.rs b/frame/support/procedural/src/pallet/expand/constants.rs index 0cbb137f9fcb6..20106c71cbf07 100644 --- a/frame/support/procedural/src/pallet/expand/constants.rs +++ b/frame/support/procedural/src/pallet/expand/constants.rs @@ -77,7 +77,6 @@ pub fn expand_constants(def: &mut Def) -> proc_macro2::TokenStream { let consts = config_consts.chain(extra_consts).map(|const_| { let const_type = &const_.type_; - let ident = &const_.ident; let ident_str = format!("{}", const_.metadata_name.unwrap_or(const_.ident)); let doc = const_.doc.clone().into_iter(); diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index a4ce6a117ee82..9cf0642464267 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -84,7 +84,7 @@ impl ExtraConstantsDef { return Err(syn::Error::new( item.span(), "Invalid pallet::extra_constants, expected item impl", - )) + )); }; let mut instances = vec![]; @@ -94,7 +94,7 @@ impl ExtraConstantsDef { if let Some((_, _, for_)) = item.trait_ { let msg = "Invalid pallet::call, expected no trait ident as in \ `impl<..> Pallet<..> { .. }`"; - return Err(syn::Error::new(for_.span(), msg)) + return Err(syn::Error::new(for_.span(), msg)); } let mut extra_constants = vec![]; @@ -103,38 +103,40 @@ impl ExtraConstantsDef { method } else { let msg = "Invalid pallet::call, only method accepted"; - return Err(syn::Error::new(impl_item.span(), msg)) + return Err(syn::Error::new(impl_item.span(), msg)); }; 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)) + return Err(syn::Error::new(method.sig.span(), msg)); } 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)) + return Err(syn::Error::new(method.sig.generics.params[0].span(), msg)); } if method.sig.generics.where_clause.is_some() { let msg = "Invalid pallet::extra_constants, method must have no where clause"; - return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)) + return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)); } let type_ = match &method.sig.output { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; - return Err(syn::Error::new(method.span(), msg)) - }, + return Err(syn::Error::new(method.span(), msg)); + } syn::ReturnType::Type(_, type_) => *type_.clone(), }; // parse metadata_name - let mut extra_constant_attrs: Vec = helper::take_item_pallet_attrs(method)?; + let mut extra_constant_attrs: Vec = + helper::take_item_pallet_attrs(method)?; if extra_constant_attrs.len() > 1 { - let msg = "Invalid attribute in pallet::constant_name, only one attribute is expected"; - return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)) + let msg = + "Invalid attribute in pallet::constant_name, only one attribute is expected"; + return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)); } let metadata_name = extra_constant_attrs.pop().map(|attr| attr.metadata_name); From a9bd1018082427bffb28017fd9731e34aa023527 Mon Sep 17 00:00:00 2001 From: Eric Miller Date: Thu, 7 Oct 2021 15:59:40 -0400 Subject: [PATCH 12/12] switched to nightly compiler to use rustfmt.toml --- .../src/pallet/parse/extra_constants.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frame/support/procedural/src/pallet/parse/extra_constants.rs b/frame/support/procedural/src/pallet/parse/extra_constants.rs index 9cf0642464267..a5f3c0a8c2dab 100644 --- a/frame/support/procedural/src/pallet/parse/extra_constants.rs +++ b/frame/support/procedural/src/pallet/parse/extra_constants.rs @@ -84,7 +84,7 @@ impl ExtraConstantsDef { return Err(syn::Error::new( item.span(), "Invalid pallet::extra_constants, expected item impl", - )); + )) }; let mut instances = vec![]; @@ -94,7 +94,7 @@ impl ExtraConstantsDef { if let Some((_, _, for_)) = item.trait_ { let msg = "Invalid pallet::call, expected no trait ident as in \ `impl<..> Pallet<..> { .. }`"; - return Err(syn::Error::new(for_.span(), msg)); + return Err(syn::Error::new(for_.span(), msg)) } let mut extra_constants = vec![]; @@ -103,29 +103,29 @@ impl ExtraConstantsDef { method } else { let msg = "Invalid pallet::call, only method accepted"; - return Err(syn::Error::new(impl_item.span(), msg)); + return Err(syn::Error::new(impl_item.span(), msg)) }; 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)); + return Err(syn::Error::new(method.sig.span(), msg)) } 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)); + return Err(syn::Error::new(method.sig.generics.params[0].span(), msg)) } if method.sig.generics.where_clause.is_some() { let msg = "Invalid pallet::extra_constants, method must have no where clause"; - return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)); + return Err(syn::Error::new(method.sig.generics.where_clause.span(), msg)) } let type_ = match &method.sig.output { syn::ReturnType::Default => { let msg = "Invalid pallet::extra_constants, method must have a return type"; - return Err(syn::Error::new(method.span(), msg)); - } + return Err(syn::Error::new(method.span(), msg)) + }, syn::ReturnType::Type(_, type_) => *type_.clone(), }; @@ -136,7 +136,7 @@ impl ExtraConstantsDef { if extra_constant_attrs.len() > 1 { let msg = "Invalid attribute in pallet::constant_name, only one attribute is expected"; - return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)); + return Err(syn::Error::new(extra_constant_attrs[1].metadata_name.span(), msg)) } let metadata_name = extra_constant_attrs.pop().map(|attr| attr.metadata_name);