@@ -4,7 +4,7 @@ use quote::{quote, quote_spanned, ToTokens};
44use 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 ) ]
1010enum 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 {
0 commit comments