Skip to content

Commit fa084f5

Browse files
authored
Update syn to v2 (#3)
1 parent b48df28 commit fa084f5

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

context_deserialize_derive/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ proc-macro = true
1313

1414
[dependencies]
1515
quote = "1.0"
16-
syn = "1.0"
16+
syn = "2"
1717

1818
[dev-dependencies]
1919
context_deserialize = { path = "../context_deserialize" }

context_deserialize_derive/src/lib.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use proc_macro::TokenStream;
22
use quote::quote;
33
use syn::{
4-
AttributeArgs, DeriveInput, GenericParam, LifetimeDef, Meta, NestedMeta, WhereClause,
5-
parse_macro_input,
4+
DeriveInput, GenericParam, LifetimeParam, Meta, Token, WhereClause, parse_macro_input,
5+
punctuated::Punctuated,
66
};
77

88
#[proc_macro_attribute]
99
pub fn context_deserialize(attr: TokenStream, item: TokenStream) -> TokenStream {
10-
let args = parse_macro_input!(attr as AttributeArgs);
10+
let args = parse_macro_input!(attr with Punctuated::<Meta, Token![,]>::parse_terminated);
1111
let input = parse_macro_input!(item as DeriveInput);
1212
let ident = &input.ident;
1313

@@ -16,11 +16,15 @@ pub fn context_deserialize(attr: TokenStream, item: TokenStream) -> TokenStream
1616

1717
for meta in args {
1818
match meta {
19-
NestedMeta::Meta(Meta::Path(p)) => {
19+
Meta::Path(p) => {
2020
ctx_types.push(p);
2121
}
22-
NestedMeta::Meta(Meta::NameValue(nv)) if nv.path.is_ident("bound") => {
23-
if let syn::Lit::Str(lit_str) = &nv.lit {
22+
Meta::NameValue(nv) if nv.path.is_ident("bound") => {
23+
if let syn::Expr::Lit(syn::ExprLit {
24+
lit: syn::Lit::Str(lit_str),
25+
..
26+
}) = &nv.value
27+
{
2428
let where_string = format!("where {}", lit_str.value());
2529
match syn::parse_str::<WhereClause>(&where_string) {
2630
Ok(where_clause) => {
@@ -76,7 +80,7 @@ pub fn context_deserialize(attr: TokenStream, item: TokenStream) -> TokenStream
7680
// Ensure 'de lifetime exists in impl generics
7781
let has_de = impl_generics
7882
.lifetimes()
79-
.any(|LifetimeDef { lifetime, .. }| lifetime.ident == "de");
83+
.any(|LifetimeParam { lifetime, .. }| lifetime.ident == "de");
8084

8185
if !has_de {
8286
impl_generics.params.insert(0, syn::parse_quote! { 'de });

0 commit comments

Comments
 (0)