Przeglądaj źródła

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

parazyd 4 lat temu
rodzic
commit
4b1cb59784
3 zmienionych plików z 21 dodań i 13 usunięć
  1. 1 1
      Cargo.lock
  2. 1 1
      src/util/derive/Cargo.toml
  3. 19 11
      src/util/derive/src/lib.rs

+ 1 - 1
Cargo.lock

@@ -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",
 ]

+ 1 - 1
src/util/derive/Cargo.toml

@@ -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"]}
 

+ 19 - 11
src/util/derive/src/lib.rs

@@ -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 {