From d0f3a2d5d7a68933463ccfce50f68b30c7fcee0c Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Tue, 1 Oct 2019 23:24:35 +0100 Subject: [PATCH 1/3] Upgrade all the deps Stable 1.x versions are pretty fancy! --- num_enum_derive/Cargo.toml | 6 +++--- num_enum_derive/src/lib.rs | 38 ++++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/num_enum_derive/Cargo.toml b/num_enum_derive/Cargo.toml index 2314ff7..c9b35b7 100644 --- a/num_enum_derive/Cargo.toml +++ b/num_enum_derive/Cargo.toml @@ -26,7 +26,7 @@ default = ["std"] # disable to use in a `no_std` environment features = ["external_doc"] [dependencies] -proc-macro2 = "0.4.30" +proc-macro2 = "1" proc-macro-crate = "0.1.4" -proc-quote = "0.2.2" -syn = "0.15.44" +proc-quote = "0.3" +syn = "1" diff --git a/num_enum_derive/src/lib.rs b/num_enum_derive/src/lib.rs index 3b0c432..a30cdbc 100644 --- a/num_enum_derive/src/lib.rs +++ b/num_enum_derive/src/lib.rs @@ -24,7 +24,7 @@ macro_rules! die { } fn literal(i: u64) -> Expr { - let literal = LitInt::new(i, syn::IntSuffix::None, Span::call_site()); + let literal = LitInt::new(&format!("{}", i), Span::call_site()); parse_quote! { #literal } @@ -57,23 +57,25 @@ impl Parse for EnumInfo { loop { if let Some(attr) = attrs.next() { if let Ok(Meta::List(meta_list)) = attr.parse_meta() { - if meta_list.ident == "repr" { - let mut nested = meta_list.nested.iter(); - if nested.len() != 1 { - die!(meta_list.ident.span()=> - "Expected exactly one `repr` argument" - ); - } - let repr = nested.next().unwrap(); - let repr: Ident = parse_quote! { - #repr - }; - if repr == "C" { - die!(repr.span()=> - "repr(C) doesn't have a well defined size" - ); - } else { - break repr; + if let Some(ident) = meta_list.path.get_ident() { + if ident == "repr" { + let mut nested = meta_list.nested.iter(); + if nested.len() != 1 { + die!(ident.span()=> + "Expected exactly one `repr` argument" + ); + } + let repr = nested.next().unwrap(); + let repr: Ident = parse_quote! { + #repr + }; + if repr == "C" { + die!(repr.span()=> + "repr(C) doesn't have a well defined size" + ); + } else { + break repr; + } } } } From 434fda9676e545596034adf0cc8859b3766355dd Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Thu, 3 Oct 2019 22:55:05 +0100 Subject: [PATCH 2/3] Use quote not proc_quote --- num_enum_derive/Cargo.toml | 2 +- num_enum_derive/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/num_enum_derive/Cargo.toml b/num_enum_derive/Cargo.toml index c9b35b7..524e118 100644 --- a/num_enum_derive/Cargo.toml +++ b/num_enum_derive/Cargo.toml @@ -28,5 +28,5 @@ features = ["external_doc"] [dependencies] proc-macro2 = "1" proc-macro-crate = "0.1.4" -proc-quote = "0.3" +quote = "1" syn = "1" diff --git a/num_enum_derive/src/lib.rs b/num_enum_derive/src/lib.rs index a30cdbc..d5c0204 100644 --- a/num_enum_derive/src/lib.rs +++ b/num_enum_derive/src/lib.rs @@ -1,7 +1,7 @@ extern crate proc_macro; use ::proc_macro::TokenStream; use ::proc_macro2::Span; -use ::proc_quote::quote; +use ::quote::quote; use ::std::iter::FromIterator; use ::syn::{ parse::{Parse, ParseStream}, From 9f6d4757a0bdf951d705aa4a41b2af01a1d15dfb Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Thu, 3 Oct 2019 22:56:01 +0100 Subject: [PATCH 3/3] Use to_string instead of format --- num_enum_derive/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/num_enum_derive/src/lib.rs b/num_enum_derive/src/lib.rs index d5c0204..200bb3f 100644 --- a/num_enum_derive/src/lib.rs +++ b/num_enum_derive/src/lib.rs @@ -24,7 +24,7 @@ macro_rules! die { } fn literal(i: u64) -> Expr { - let literal = LitInt::new(&format!("{}", i), Span::call_site()); + let literal = LitInt::new(&i.to_string(), Span::call_site()); parse_quote! { #literal }