util/derive: Update proc-macro-crate to latest version.

This commit is contained in:
parazyd
2022-03-26 14:59:10 +01:00
parent 44fdddb018
commit 4b1cb59784
3 changed files with 21 additions and 13 deletions

2
Cargo.lock generated
View File

@@ -1607,7 +1607,7 @@ name = "darkfi-derive"
version = "0.3.0"
dependencies = [
"darkfi-derive-internal",
"proc-macro-crate 0.1.5",
"proc-macro-crate 1.1.3",
"proc-macro2 1.0.36",
"syn 1.0.89",
]

View File

@@ -7,7 +7,7 @@ edition = "2021"
proc-macro = true
[dependencies]
proc-macro-crate = "0.1.5"
proc-macro-crate = "1.1.3"
proc-macro2 = "1.0.36"
syn = {version = "1.0.89", features = ["full", "fold"]}

View File

@@ -1,23 +1,27 @@
extern crate proc_macro;
use proc_macro::TokenStream;
use proc_macro2::Span;
use proc_macro_crate::crate_name;
use proc_macro_crate::{crate_name, FoundCrate};
use syn::{Ident, ItemStruct};
use darkfi_derive_internal::{struct_de, struct_ser};
#[proc_macro_derive(SerialEncodable)]
pub fn darkfi_serialize(input: TokenStream) -> TokenStream {
let cratename = Ident::new(
&crate_name("darkfi").unwrap_or_else(|_| "crate".to_string()),
Span::call_site(),
);
let found_crate = crate_name("darkfi").expect("darkfi is found in Cargo.toml");
let found_crate = match found_crate {
FoundCrate::Name(name) => name,
FoundCrate::Itself => "crate".to_string(),
};
let cratename = Ident::new(&found_crate, Span::call_site());
let res = if let Ok(input) = syn::parse::<ItemStruct>(input) {
struct_ser(&input, cratename)
} else {
// For now we only allow derive on structs
unreachable!()
todo!("Implement Enum and Union")
};
TokenStream::from(match res {
@@ -28,16 +32,20 @@ pub fn darkfi_serialize(input: TokenStream) -> TokenStream {
#[proc_macro_derive(SerialDecodable)]
pub fn darkfi_deserialize(input: TokenStream) -> TokenStream {
let cratename = Ident::new(
&crate_name("darkfi").unwrap_or_else(|_| "crate".to_string()),
Span::call_site(),
);
let found_crate = crate_name("darkfi").expect("darkfi is found in Cargo.toml");
let found_crate = match found_crate {
FoundCrate::Name(name) => name,
FoundCrate::Itself => "crate".to_string(),
};
let cratename = Ident::new(&found_crate, Span::call_site());
let res = if let Ok(input) = syn::parse::<ItemStruct>(input) {
struct_de(&input, cratename)
} else {
// For now we only allow derive on structs
unreachable!()
todo!("Implement Enum and Union")
};
TokenStream::from(match res {