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
@@ -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 )
}
}
}