Skip to content

Commit 7785cd6

Browse files
authored
Update syn requirement from 1 to 2 (#12)
1 parent 4e18f54 commit 7785cd6

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

pyo3-asyncio-macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ proc-macro = true
2121
[dependencies]
2222
proc-macro2 = "1.0"
2323
quote = "1"
24-
syn = { version = "1", features = ["full"] }
24+
syn = { version = "2", features = ["full"] }

pyo3-asyncio-macros/src/tokio.rs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ fn parse_string(int: syn::Lit, span: Span, field: &str) -> Result<String, syn::E
136136

137137
fn parse_knobs(
138138
input: syn::ItemFn,
139-
args: syn::AttributeArgs,
139+
args: Vec<syn::Meta>,
140140
is_test: bool,
141141
rt_multi_thread: bool,
142142
) -> Result<TokenStream, syn::Error> {
@@ -156,18 +156,32 @@ fn parse_knobs(
156156

157157
for arg in args {
158158
match arg {
159-
syn::NestedMeta::Meta(syn::Meta::NameValue(namevalue)) => {
159+
syn::Meta::NameValue(namevalue) => {
160160
let ident = namevalue.path.get_ident();
161161
if ident.is_none() {
162162
let msg = "Must have specified ident";
163163
return Err(syn::Error::new_spanned(namevalue, msg));
164164
}
165165
match ident.unwrap().to_string().to_lowercase().as_str() {
166166
"worker_threads" => {
167-
config.set_worker_threads(namevalue.lit.clone(), namevalue.span())?;
167+
if let syn::Expr::Lit(expr_lit) = &namevalue.value {
168+
config.set_worker_threads(expr_lit.lit.clone(), namevalue.span())?;
169+
} else {
170+
return Err(syn::Error::new_spanned(
171+
&namevalue.value,
172+
"Expected a literal value",
173+
));
174+
}
168175
}
169176
"flavor" => {
170-
config.set_flavor(namevalue.lit.clone(), namevalue.span())?;
177+
if let syn::Expr::Lit(expr_lit) = &namevalue.value {
178+
config.set_flavor(expr_lit.lit.clone(), namevalue.span())?;
179+
} else {
180+
return Err(syn::Error::new_spanned(
181+
&namevalue.value,
182+
"Expected a literal value",
183+
));
184+
}
171185
}
172186
"core_threads" => {
173187
let msg = "Attribute `core_threads` is renamed to `worker_threads`";
@@ -179,7 +193,7 @@ fn parse_knobs(
179193
}
180194
}
181195
}
182-
syn::NestedMeta::Meta(syn::Meta::Path(path)) => {
196+
syn::Meta::Path(path) => {
183197
let ident = path.get_ident();
184198
if ident.is_none() {
185199
let msg = "Must have specified ident";
@@ -279,7 +293,8 @@ fn parse_knobs(
279293
#[cfg(not(test))] // Work around for rust-lang/rust#62127
280294
pub(crate) fn main(args: TokenStream, item: TokenStream, rt_multi_thread: bool) -> TokenStream {
281295
let input = syn::parse_macro_input!(item as syn::ItemFn);
282-
let args = syn::parse_macro_input!(args as syn::AttributeArgs);
296+
let args = syn::parse_macro_input!(args with syn::punctuated::Punctuated::<syn::Meta, syn::Token![,]>::parse_terminated);
297+
let args: Vec<syn::Meta> = args.into_iter().collect();
283298

284299
if input.sig.ident == "main" && !input.sig.inputs.is_empty() {
285300
let msg = "the main function cannot accept arguments";

0 commit comments

Comments
 (0)