Skip to content

Commit 92d33b7

Browse files
authored
macros: update syn (#5572)
1 parent 1cb7bf1 commit 92d33b7

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

tokio-macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ proc-macro = true
2424
[dependencies]
2525
proc-macro2 = "1.0.7"
2626
quote = "1"
27-
syn = { version = "1.0.56", features = ["full"] }
27+
syn = { version = "2.0", features = ["full"] }
2828

2929
[dev-dependencies]
3030
tokio = { version = "1.0.0", path = "../tokio", features = ["full"] }

tokio-macros/src/entry.rs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use quote::{quote, quote_spanned, ToTokens};
44
use syn::{parse::Parser, Ident, Path};
55

66
// syn::AttributeArgs does not implement syn::Parse
7-
type AttributeArgs = syn::punctuated::Punctuated<syn::NestedMeta, syn::Token![,]>;
7+
type AttributeArgs = syn::punctuated::Punctuated<syn::Meta, syn::Token![,]>;
88

99
#[derive(Clone, Copy, PartialEq)]
1010
enum RuntimeFlavor {
@@ -245,7 +245,7 @@ fn build_config(
245245

246246
for arg in args {
247247
match arg {
248-
syn::NestedMeta::Meta(syn::Meta::NameValue(namevalue)) => {
248+
syn::Meta::NameValue(namevalue) => {
249249
let ident = namevalue
250250
.path
251251
.get_ident()
@@ -254,34 +254,26 @@ fn build_config(
254254
})?
255255
.to_string()
256256
.to_lowercase();
257+
let lit = match &namevalue.value {
258+
syn::Expr::Lit(syn::ExprLit { lit, .. }) => lit,
259+
expr => return Err(syn::Error::new_spanned(expr, "Must be a literal")),
260+
};
257261
match ident.as_str() {
258262
"worker_threads" => {
259-
config.set_worker_threads(
260-
namevalue.lit.clone(),
261-
syn::spanned::Spanned::span(&namevalue.lit),
262-
)?;
263+
config.set_worker_threads(lit.clone(), syn::spanned::Spanned::span(lit))?;
263264
}
264265
"flavor" => {
265-
config.set_flavor(
266-
namevalue.lit.clone(),
267-
syn::spanned::Spanned::span(&namevalue.lit),
268-
)?;
266+
config.set_flavor(lit.clone(), syn::spanned::Spanned::span(lit))?;
269267
}
270268
"start_paused" => {
271-
config.set_start_paused(
272-
namevalue.lit.clone(),
273-
syn::spanned::Spanned::span(&namevalue.lit),
274-
)?;
269+
config.set_start_paused(lit.clone(), syn::spanned::Spanned::span(lit))?;
275270
}
276271
"core_threads" => {
277272
let msg = "Attribute `core_threads` is renamed to `worker_threads`";
278273
return Err(syn::Error::new_spanned(namevalue, msg));
279274
}
280275
"crate" => {
281-
config.set_crate_name(
282-
namevalue.lit.clone(),
283-
syn::spanned::Spanned::span(&namevalue.lit),
284-
)?;
276+
config.set_crate_name(lit.clone(), syn::spanned::Spanned::span(lit))?;
285277
}
286278
name => {
287279
let msg = format!(
@@ -292,7 +284,7 @@ fn build_config(
292284
}
293285
}
294286
}
295-
syn::NestedMeta::Meta(syn::Meta::Path(path)) => {
287+
syn::Meta::Path(path) => {
296288
let name = path
297289
.get_ident()
298290
.ok_or_else(|| syn::Error::new_spanned(&path, "Must have specified ident"))?
@@ -478,7 +470,11 @@ pub(crate) fn test(args: TokenStream, item: TokenStream, rt_multi_thread: bool)
478470
Ok(it) => it,
479471
Err(e) => return token_stream_with_error(item, e),
480472
};
481-
let config = if let Some(attr) = input.attrs.iter().find(|attr| attr.path.is_ident("test")) {
473+
let config = if let Some(attr) = input
474+
.attrs
475+
.iter()
476+
.find(|attr| attr.meta.path().is_ident("test"))
477+
{
482478
let msg = "second test attribute is supplied";
483479
Err(syn::Error::new_spanned(attr, msg))
484480
} else {

tokio-macros/src/select.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use proc_macro::{TokenStream, TokenTree};
22
use proc_macro2::Span;
33
use quote::quote;
4-
use syn::Ident;
4+
use syn::{parse::Parser, Ident};
55

66
pub(crate) fn declare_output_enum(input: TokenStream) -> TokenStream {
77
// passed in is: `(_ _ _)` with one `_` per branch
@@ -46,7 +46,7 @@ pub(crate) fn clean_pattern_macro(input: TokenStream) -> TokenStream {
4646
// If this isn't a pattern, we return the token stream as-is. The select!
4747
// macro is using it in a location requiring a pattern, so an error will be
4848
// emitted there.
49-
let mut input: syn::Pat = match syn::parse(input.clone()) {
49+
let mut input: syn::Pat = match syn::Pat::parse_single.parse(input.clone()) {
5050
Ok(it) => it,
5151
Err(_) => return input,
5252
};
@@ -58,7 +58,6 @@ pub(crate) fn clean_pattern_macro(input: TokenStream) -> TokenStream {
5858
// Removes any occurrences of ref or mut in the provided pattern.
5959
fn clean_pattern(pat: &mut syn::Pat) {
6060
match pat {
61-
syn::Pat::Box(_box) => {}
6261
syn::Pat::Lit(_literal) => {}
6362
syn::Pat::Macro(_macro) => {}
6463
syn::Pat::Path(_path) => {}
@@ -94,7 +93,7 @@ fn clean_pattern(pat: &mut syn::Pat) {
9493
}
9594
}
9695
syn::Pat::TupleStruct(tuple) => {
97-
for elem in tuple.pat.elems.iter_mut() {
96+
for elem in tuple.elems.iter_mut() {
9897
clean_pattern(elem);
9998
}
10099
}

0 commit comments

Comments
 (0)