Skip to content

Commit

Permalink
Update to latest proc-macro-crate version (paritytech#8294)
Browse files Browse the repository at this point in the history
  • Loading branch information
bkchr authored Mar 9, 2021
1 parent 8fca15b commit b6c2c5d
Show file tree
Hide file tree
Showing 17 changed files with 119 additions and 140 deletions.
40 changes: 25 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion client/chain-spec/derive/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
proc-macro = true

[dependencies]
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"
proc-macro2 = "1.0.6"
quote = "1.0.3"
syn = "1.0.58"
Expand Down
14 changes: 6 additions & 8 deletions client/chain-spec/derive/src/impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use proc_macro2::{Span, TokenStream};
use quote::quote;
use syn::{DeriveInput, Ident, Error};
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};

const CRATE_NAME: &str = "sc-chain-spec";
const ATTRIBUTE_NAME: &str = "forks";
Expand Down Expand Up @@ -77,7 +77,8 @@ pub fn group_derive(ast: &DeriveInput) -> proc_macro::TokenStream {
let combine_with = generate_combine_with(&field_names);
let to_base = generate_fork_to_base(name, &field_names);
let serde_crate_name = match proc_macro_crate::crate_name("serde") {
Ok(name) => Ident::new(&name.replace("-", "_"), Span::call_site()),
Ok(FoundCrate::Itself) => Ident::new("serde", Span::call_site()),
Ok(FoundCrate::Name(name)) => Ident::new(&name, Span::call_site()),
Err(e) => {
let err = Error::new(
Span::call_site(),
Expand Down Expand Up @@ -151,14 +152,11 @@ pub fn derive(
_ => return err(),
};

const PROOF: &str = "CARGO_PKG_NAME always defined when compiling; qed";
let name = &ast.ident;
let crate_name = match crate_name(CRATE_NAME) {
Ok(chain_spec_name) => chain_spec_name,
Err(e) => if std::env::var("CARGO_PKG_NAME").expect(PROOF) == CRATE_NAME {
// we return the name of the crate here instead of `crate` to support doc tests.
CRATE_NAME.replace("-", "_")
} else {
Ok(FoundCrate::Itself) => CRATE_NAME.replace("-", "_"),
Ok(FoundCrate::Name(chain_spec_name)) => chain_spec_name,
Err(e) => {
let err = Error::new(Span::call_site(), &e).to_compile_error();
return quote!( #err ).into()
},
Expand Down
2 changes: 1 addition & 1 deletion client/tracing/proc-macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
proc-macro = true

[dependencies]
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"
proc-macro2 = "1.0.6"
quote = { version = "1.0.3", features = ["proc-macro"] }
syn = { version = "1.0.58", features = ["proc-macro", "full", "extra-traits", "parsing"] }
18 changes: 5 additions & 13 deletions client/tracing/proc-macro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

use proc_macro::TokenStream;
use proc_macro2::Span;
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::quote;
use syn::{Error, Expr, Ident, ItemFn};

Expand Down Expand Up @@ -118,18 +118,10 @@ pub fn prefix_logs_with(arg: TokenStream, item: TokenStream) -> TokenStream {

let name = syn::parse_macro_input!(arg as Expr);

let crate_name = if std::env::var("CARGO_PKG_NAME")
.expect("cargo env var always there when compiling; qed")
== "sc-tracing"
{
Ident::from(Ident::new("sc_tracing", Span::call_site()))
} else {
let crate_name = match crate_name("sc-tracing") {
Ok(x) => x,
Err(err) => return Error::new(Span::call_site(), err).to_compile_error().into(),
};

Ident::new(&crate_name, Span::call_site())
let crate_name = match crate_name("sc-tracing") {
Ok(FoundCrate::Itself) => Ident::from(Ident::new("sc_tracing", Span::call_site())),
Ok(FoundCrate::Name(crate_name)) => Ident::new(&crate_name, Span::call_site()),
Err(e) => return Error::new(Span::call_site(), e).to_compile_error().into(),
};

let ItemFn {
Expand Down
2 changes: 1 addition & 1 deletion frame/staking/reward-curve/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ proc-macro = true
syn = { version = "1.0.58", features = ["full", "visit"] }
quote = "1.0.3"
proc-macro2 = "1.0.6"
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"

[dev-dependencies]
sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" }
7 changes: 4 additions & 3 deletions frame/staking/reward-curve/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ mod log;
use log::log2;
use proc_macro::TokenStream;
use proc_macro2::{TokenStream as TokenStream2, Span};
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::{quote, ToTokens};
use std::convert::TryInto;
use syn::parse::{Parse, ParseStream};
Expand Down Expand Up @@ -82,11 +82,12 @@ pub fn build(input: TokenStream) -> TokenStream {
let test_module = generate_test_module(&input);

let imports = match crate_name("sp-runtime") {
Ok(sp_runtime) => {
Ok(FoundCrate::Itself) => quote!( extern crate sp_runtime as _sp_runtime; ),
Ok(FoundCrate::Name(sp_runtime)) => {
let ident = syn::Ident::new(&sp_runtime, Span::call_site());
quote!( extern crate #ident as _sp_runtime; )
},
Err(e) => syn::Error::new(Span::call_site(), &e).to_compile_error(),
Err(e) => syn::Error::new(Span::call_site(), e).to_compile_error(),
};

let const_name = input.ident;
Expand Down
2 changes: 1 addition & 1 deletion frame/support/procedural/tools/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ frame-support-procedural-tools-derive = { version = "3.0.0", path = "./derive" }
proc-macro2 = "1.0.6"
quote = "1.0.3"
syn = { version = "1.0.58", features = ["full", "visit"] }
proc-macro-crate = "0.1.5"
proc-macro-crate = "1.0.0"
57 changes: 26 additions & 31 deletions frame/support/procedural/tools/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
// reexport proc macros
pub use frame_support_procedural_tools_derive::*;

use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use syn::parse::Error;
use quote::quote;

Expand Down Expand Up @@ -50,44 +50,39 @@ pub fn generate_crate_access(unique_id: &str, def_crate: &str) -> TokenStream {
///
/// for `frame-support` output will for example be `frame_support`.
pub fn generate_crate_access_2018(def_crate: &str) -> Result<syn::Ident, Error> {
if std::env::var("CARGO_PKG_NAME").unwrap() == def_crate {
let name = def_crate.to_string().replace("-", "_");
Ok(syn::Ident::new(&name, Span::call_site()))
} else {
match crate_name(def_crate) {
Ok(name) => {
Ok(Ident::new(&name, Span::call_site()))
},
Err(e) => {
Err(Error::new(Span::call_site(), &e))
}
match crate_name(def_crate) {
Ok(FoundCrate::Itself) => {
let name = def_crate.to_string().replace("-", "_");
Ok(syn::Ident::new(&name, Span::call_site()))
},
Ok(FoundCrate::Name(name)) => {
Ok(Ident::new(&name, Span::call_site()))
},
Err(e) => {
Err(Error::new(Span::call_site(), e))
}
}
}

/// Generates the hidden includes that are required to make the macro independent from its scope.
pub fn generate_hidden_includes(unique_id: &str, def_crate: &str) -> TokenStream {
if std::env::var("CARGO_PKG_NAME").unwrap() == def_crate {
TokenStream::new()
} else {
let mod_name = generate_hidden_includes_mod_name(unique_id);
let mod_name = generate_hidden_includes_mod_name(unique_id);

match crate_name(def_crate) {
Ok(name) => {
let name = Ident::new(&name, Span::call_site());
quote::quote!(
#[doc(hidden)]
mod #mod_name {
pub extern crate #name as hidden_include;
}
)
},
Err(e) => {
let err = Error::new(Span::call_site(), &e).to_compile_error();
quote!( #err )
}
match crate_name(def_crate) {
Ok(FoundCrate::Itself) => quote!(),
Ok(FoundCrate::Name(name)) => {
let name = Ident::new(&name, Span::call_site());
quote::quote!(
#[doc(hidden)]
mod #mod_name {
pub extern crate #name as hidden_include;
}
)
},
Err(e) => {
let err = Error::new(Span::call_site(), e).to_compile_error();
quote!( #err )
}

}
}

Expand Down
2 changes: 1 addition & 1 deletion primitives/api/proc-macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ quote = "1.0.3"
syn = { version = "1.0.58", features = ["full", "fold", "extra-traits", "visit"] }
proc-macro2 = "1.0.6"
blake2-rfc = { version = "0.2.18", default-features = false }
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"

# Required for the doc tests
[features]
Expand Down
Loading

0 comments on commit b6c2c5d

Please sign in to comment.