Update to latest proc-macro-crate version (#8294)

This commit is contained in:
Bastian Köcher
2021-03-09 23:22:25 +01:00
committed by GitHub
parent 7599e0d6e8
commit c33235ac5b
17 changed files with 119 additions and 140 deletions
+25 -15
View File
@@ -1797,7 +1797,7 @@ name = "frame-support-procedural-tools"
version = "3.0.0"
dependencies = [
"frame-support-procedural-tools-derive",
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -2756,7 +2756,7 @@ version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote",
"syn",
@@ -3817,7 +3817,7 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85ee3c48cb9d9b275ad967a0e96715badc13c6029adb92f34fa17b9ff28fd81f"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 0.1.5",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -5329,7 +5329,7 @@ dependencies = [
name = "pallet-staking-reward-curve"
version = "3.0.0"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"sp-runtime",
@@ -5551,7 +5551,7 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9029e65297c7fd6d7013f0579e193ec2b34ae78eabca854c9417504ad8a2d214"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote",
"syn",
@@ -6041,6 +6041,16 @@ dependencies = [
"toml",
]
[[package]]
name = "proc-macro-crate"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92"
dependencies = [
"thiserror",
"toml",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@@ -6817,7 +6827,7 @@ dependencies = [
name = "sc-chain-spec-derive"
version = "3.0.0"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -7874,7 +7884,7 @@ dependencies = [
name = "sc-tracing-proc-macro"
version = "3.0.0"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -8349,7 +8359,7 @@ name = "sp-api-proc-macro"
version = "3.0.0"
dependencies = [
"blake2-rfc",
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -8757,7 +8767,7 @@ dependencies = [
name = "sp-npos-elections-compact"
version = "3.0.0"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -8853,7 +8863,7 @@ name = "sp-runtime-interface-proc-macro"
version = "3.0.0"
dependencies = [
"Inflector",
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"proc-macro2",
"quote",
"syn",
@@ -9430,7 +9440,7 @@ dependencies = [
name = "substrate-test-utils-derive"
version = "0.9.0"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.0.0",
"quote",
"syn",
]
@@ -9545,18 +9555,18 @@ dependencies = [
[[package]]
name = "thiserror"
version = "1.0.23"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146"
checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.23"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1"
checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
dependencies = [
"proc-macro2",
"quote",
@@ -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"
@@ -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";
@@ -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(),
@@ -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()
},
@@ -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"] }
+5 -13
View File
@@ -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};
@@ -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 {
@@ -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" }
@@ -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};
@@ -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;
@@ -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"
@@ -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;
@@ -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 )
}
}
}
@@ -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]
@@ -26,7 +26,7 @@ use quote::quote;
use std::env;
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
fn generate_hidden_includes_mod_name(unique_id: &'static str) -> Ident {
Ident::new(&format!("sp_api_hidden_includes_{}", unique_id), Span::call_site())
@@ -34,27 +34,23 @@ fn generate_hidden_includes_mod_name(unique_id: &'static str) -> Ident {
/// Generates the hidden includes that are required to make the macro independent from its scope.
pub fn generate_hidden_includes(unique_id: &'static str) -> TokenStream {
if env::var("CARGO_PKG_NAME").unwrap() == "sp-api" {
TokenStream::new()
} else {
let mod_name = generate_hidden_includes_mod_name(unique_id);
match crate_name("sp-api") {
Ok(client_name) => {
let client_name = Ident::new(&client_name, Span::call_site());
quote!(
#[doc(hidden)]
mod #mod_name {
pub extern crate #client_name as sp_api;
}
)
},
Err(e) => {
let err = Error::new(Span::call_site(), &e).to_compile_error();
quote!( #err )
}
let mod_name = generate_hidden_includes_mod_name(unique_id);
match crate_name("sp-api") {
Ok(FoundCrate::Itself) => quote!(),
Ok(FoundCrate::Name(client_name)) => {
let client_name = Ident::new(&client_name, Span::call_site());
quote!(
#[doc(hidden)]
mod #mod_name {
pub extern crate #client_name as sp_api;
}
)
},
Err(e) => {
let err = Error::new(Span::call_site(), e).to_compile_error();
quote!( #err )
}
}.into()
}
}
/// Generates the access to the `sc_client` crate.
@@ -18,4 +18,4 @@ proc-macro = true
syn = { version = "1.0.58", features = ["full", "visit"] }
quote = "1.0"
proc-macro2 = "1.0.6"
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"
@@ -19,9 +19,9 @@
use proc_macro::TokenStream;
use proc_macro2::{TokenStream as TokenStream2, Span, Ident};
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::quote;
use syn::{parse::{Parse, ParseStream, Result}};
use syn::parse::{Parse, ParseStream, Result};
mod assignment;
mod codec;
@@ -348,18 +348,13 @@ fn unique_targets_impl(count: usize) -> TokenStream2 {
}
fn imports() -> Result<TokenStream2> {
if std::env::var("CARGO_PKG_NAME").unwrap() == "sp-npos-elections" {
Ok(quote! {
use crate as _npos;
})
} else {
match crate_name("sp-npos-elections") {
Ok(sp_npos_elections) => {
let ident = syn::Ident::new(&sp_npos_elections, Span::call_site());
Ok(quote!( extern crate #ident as _npos; ))
},
Err(e) => Err(syn::Error::new(Span::call_site(), &e)),
}
match crate_name("sp-npos-elections") {
Ok(FoundCrate::Itself) => Ok(quote! { use crate as _npos; }),
Ok(FoundCrate::Name(sp_npos_elections)) => {
let ident = syn::Ident::new(&sp_npos_elections, Span::call_site());
Ok(quote!( extern crate #ident as _npos; ))
},
Err(e) => Err(syn::Error::new(Span::call_site(), e)),
}
}
@@ -20,4 +20,4 @@ syn = { version = "1.0.58", features = ["full", "visit", "fold", "extra-traits"]
quote = "1.0.3"
proc-macro2 = "1.0.3"
Inflector = "0.11.4"
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"
@@ -24,10 +24,9 @@ use syn::{
TraitItem, parse_quote, spanned::Spanned, Result, Meta, NestedMeta, Lit, Attribute,
};
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use std::env;
use std::collections::{BTreeMap, btree_map::Entry};
use std::{env, collections::{BTreeMap, btree_map::Entry}};
use quote::quote;
@@ -77,21 +76,18 @@ impl<'a> RuntimeInterface<'a> {
/// Generates the include for the runtime-interface crate.
pub fn generate_runtime_interface_include() -> TokenStream {
if env::var("CARGO_PKG_NAME").unwrap() == "sp-runtime-interface" {
TokenStream::new()
} else {
match crate_name("sp-runtime-interface") {
Ok(crate_name) => {
let crate_name = Ident::new(&crate_name, Span::call_site());
quote!(
#[doc(hidden)]
extern crate #crate_name as proc_macro_runtime_interface;
)
},
Err(e) => {
let err = Error::new(Span::call_site(), &e).to_compile_error();
quote!( #err )
}
match crate_name("sp-runtime-interface") {
Ok(FoundCrate::Itself) => quote!(),
Ok(FoundCrate::Name(crate_name)) => {
let crate_name = Ident::new(&crate_name, Span::call_site());
quote!(
#[doc(hidden)]
extern crate #crate_name as proc_macro_runtime_interface;
)
},
Err(e) => {
let err = Error::new(Span::call_site(), e).to_compile_error();
quote!( #err )
}
}
}
+1 -1
View File
@@ -11,7 +11,7 @@ description = "Substrate test utilities macros"
[dependencies]
quote = "1.0.6"
syn = { version = "1.0.58", features = ["full"] }
proc-macro-crate = "0.1.4"
proc-macro-crate = "1.0.0"
[lib]
proc-macro = true
+5 -9
View File
@@ -17,9 +17,8 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use proc_macro::{Span, TokenStream};
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::quote;
use std::env;
#[proc_macro_attribute]
pub fn test(args: TokenStream, item: TokenStream) -> TokenStream {
@@ -55,13 +54,10 @@ fn parse_knobs(
}
};
let crate_name = if env::var("CARGO_PKG_NAME").unwrap() == "substrate-test-utils" {
syn::Ident::new("substrate_test_utils", Span::call_site().into())
} else {
let crate_name = crate_name("substrate-test-utils")
.map_err(|e| syn::Error::new_spanned(&sig, e))?;
syn::Ident::new(&crate_name, Span::call_site().into())
let crate_name = match crate_name("substrate-test-utils") {
Ok(FoundCrate::Itself) => syn::Ident::new("substrate_test_utils", Span::call_site().into()),
Ok(FoundCrate::Name(crate_name)) => syn::Ident::new(&crate_name, Span::call_site().into()),
Err(e) => return Err(syn::Error::new_spanned(&sig, e)),
};
let header = {