@@ -331,6 +331,16 @@ pub fn interrupt_riscv64(args: TokenStream, input: TokenStream) -> TokenStream {
331
331
fn interrupt ( args : TokenStream , input : TokenStream , _arch : RiscvArch ) -> TokenStream {
332
332
let f = parse_macro_input ! ( input as ItemFn ) ;
333
333
334
+ // check the function arguments
335
+ if !f. sig . inputs . is_empty ( ) {
336
+ return parse:: Error :: new (
337
+ f. sig . inputs . first ( ) . unwrap ( ) . span ( ) ,
338
+ "`#[interrupt]` function should not have arguments" ,
339
+ )
340
+ . to_compile_error ( )
341
+ . into ( ) ;
342
+ }
343
+
334
344
// check the function signature
335
345
let valid_signature = f. sig . constness . is_none ( )
336
346
&& f. sig . asyncness . is_none ( )
@@ -362,6 +372,7 @@ fn interrupt(args: TokenStream, input: TokenStream, _arch: RiscvArch) -> TokenSt
362
372
// XXX should we blacklist other attributes?
363
373
let attrs = f. attrs ;
364
374
let ident = f. sig . ident ;
375
+ let export_name = format ! ( "{:#}" , ident) ;
365
376
let block = f. block ;
366
377
367
378
#[ cfg( not( feature = "v-trap" ) ) ]
@@ -371,7 +382,7 @@ fn interrupt(args: TokenStream, input: TokenStream, _arch: RiscvArch) -> TokenSt
371
382
372
383
quote ! (
373
384
#start_trap
374
- #[ export_name = #ident ]
385
+ #[ export_name = #export_name ]
375
386
#( #attrs) *
376
387
pub unsafe fn #ident( ) #block
377
388
)
@@ -404,7 +415,7 @@ mod v_trap {
404
415
"a7" ,
405
416
] ;
406
417
407
- pub fn start_interrupt_trap_asm (
418
+ pub ( crate ) fn start_interrupt_trap_asm (
408
419
ident : & syn:: Ident ,
409
420
arch : RiscvArch ,
410
421
) -> proc_macro2:: TokenStream {
0 commit comments