Skip to content

Commit

Permalink
sp-api: Make the generated code act based on std in sp-api (parit…
Browse files Browse the repository at this point in the history
…ytech#14267)

* sp-api: Make the generated code act based on `std` in `sp-api`

Instead of letting the macro generate code that checks if the `std` feature is enabled, it will now
generate code that checks if the `std` feature is enabled for the `sp-api` crate. The old
implementation basically required that the crate in which the macro was used, had a `std` feature.
Now we don't have this requirement anymore and act accordingly the feature in `sp-api` directly.

* Missing feature!

---------

Co-authored-by: parity-processbot <>
  • Loading branch information
bkchr authored and nathanwhit committed Jul 19, 2023
1 parent e5ba34d commit 2f89c67
Show file tree
Hide file tree
Showing 6 changed files with 200 additions and 186 deletions.
1 change: 1 addition & 0 deletions frame/executive/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ std = [
"codec/std",
"frame-support/std",
"frame-system/std",
"frame-try-runtime/std",
"scale-info/std",
"sp-core/std",
"sp-io/std",
Expand Down
21 changes: 12 additions & 9 deletions primitives/api/proc-macro/src/decl_runtime_apis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -539,8 +539,6 @@ impl<'a> Fold for ToClientSideDecl<'a> {
input.supertraits.push(parse_quote!( #crate_::Core<#block_ident> ));
}

// The client side trait is only required when compiling with the feature `std` or `test`.
input.attrs.push(parse_quote!( #[cfg(any(feature = "std", test))] ));
input.items = self.fold_item_trait_items(input.items, input.generics.params.len());

fold::fold_item_trait(self, input)
Expand Down Expand Up @@ -584,12 +582,13 @@ fn generate_runtime_info_impl(trait_: &ItemTrait, version: u64) -> TokenStream {
});

quote!(
#[cfg(any(feature = "std", test))]
impl < #( #impl_generics, )* > #crate_::RuntimeApiInfo
for dyn #trait_name < #( #ty_generics, )* >
{
#id
#version
#crate_::std_enabled! {
impl < #( #impl_generics, )* > #crate_::RuntimeApiInfo
for dyn #trait_name < #( #ty_generics, )* >
{
#id
#version
}
}
)
}
Expand Down Expand Up @@ -636,7 +635,11 @@ fn generate_client_side_decls(decls: &[ItemTrait]) -> Result<TokenStream> {

let runtime_info = api_version.map(|v| generate_runtime_info_impl(&decl, v))?;

result.push(quote!( #decl #runtime_info #( #errors )* ));
result.push(quote!(
#crate_::std_enabled! { #decl }
#runtime_info
#( #errors )*
));
}

Ok(quote!( #( #result )* ))
Expand Down
Loading

0 comments on commit 2f89c67

Please sign in to comment.