@@ -8,10 +8,7 @@ mod util;
8
8
9
9
use proc_macro2:: TokenStream as TokenStream2 ;
10
10
use syn:: {
11
- braced,
12
- parse:: { self , Parse , ParseStream , Parser } ,
13
- token:: Brace ,
14
- Attribute , Ident , Item , LitInt , Meta , Token ,
11
+ braced, parse:: { self , Parse , ParseStream , Parser } , token:: Brace , Attribute , Ident , Item , LitBool , LitInt , Meta , Token
15
12
} ;
16
13
17
14
use crate :: syntax:: {
@@ -197,6 +194,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof
197
194
let mut shared_resources = None ;
198
195
let mut local_resources = None ;
199
196
let mut prio_span = None ;
197
+ let mut is_local_task = None ;
200
198
201
199
loop {
202
200
if input. is_empty ( ) {
@@ -277,6 +275,19 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof
277
275
local_resources = Some ( util:: parse_local_resources ( input) ?) ;
278
276
}
279
277
278
+ "is_local_task" => {
279
+ if is_local_task. is_some ( ) {
280
+ return Err ( parse:: Error :: new (
281
+ ident. span ( ) ,
282
+ "argument appears more than once" ,
283
+ ) ) ;
284
+ }
285
+
286
+ let lit: LitBool = input. parse ( ) ?;
287
+
288
+ is_local_task = Some ( lit. value ) ;
289
+ }
290
+
280
291
_ => {
281
292
return Err ( parse:: Error :: new ( ident. span ( ) , "unexpected argument" ) ) ;
282
293
}
@@ -291,6 +302,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof
291
302
}
292
303
let shared_resources = shared_resources. unwrap_or_default ( ) ;
293
304
let local_resources = local_resources. unwrap_or_default ( ) ;
305
+ let is_local_task = is_local_task. unwrap_or ( false ) ;
294
306
295
307
Ok ( if let Some ( binds) = binds {
296
308
// Hardware tasks can't run at anything lower than 1
@@ -317,6 +329,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof
317
329
priority,
318
330
shared_resources,
319
331
local_resources,
332
+ is_local_task,
320
333
} )
321
334
} )
322
335
} )
0 commit comments