@@ -5,8 +5,8 @@ use crate::svd::{
5
5
} ;
6
6
use core:: u64;
7
7
use log:: warn;
8
- use proc_macro2:: { Ident , Punct , Spacing , Span , TokenStream } ;
9
- use quote:: { quote, ToTokens } ;
8
+ use proc_macro2:: { Delimiter , Group , Ident , Span , TokenStream } ;
9
+ use quote:: quote;
10
10
use std:: collections:: HashSet ;
11
11
use std:: fmt:: Write ;
12
12
use std:: { borrow:: Cow , collections:: BTreeMap } ;
@@ -297,9 +297,6 @@ pub fn render_register_mod(
297
297
let mut zero_to_modify_fields_bitmap = 0 ;
298
298
let mut one_to_modify_fields_bitmap = 0 ;
299
299
300
- let open = Punct :: new ( '{' , Spacing :: Alone ) ;
301
- let close = Punct :: new ( '}' , Spacing :: Alone ) ;
302
-
303
300
let debug_feature = config
304
301
. impl_debug_feature
305
302
. as_ref ( )
@@ -362,24 +359,16 @@ pub fn render_register_mod(
362
359
}
363
360
364
361
if can_read && !r_impl_items. is_empty ( ) {
365
- mod_items. extend ( quote ! {
366
- impl R #open #r_impl_items #close
367
- } ) ;
362
+ mod_items. extend ( quote ! { impl R { #r_impl_items } } ) ;
368
363
}
369
364
if !r_debug_impl. is_empty ( ) {
370
- mod_items. extend ( quote ! {
371
- #r_debug_impl
372
- } ) ;
365
+ mod_items. extend ( quote ! { #r_debug_impl } ) ;
373
366
}
374
367
375
368
if can_write {
376
369
mod_items. extend ( quote ! {
377
- impl W #open
370
+ impl W { #w_impl_items }
378
371
} ) ;
379
-
380
- mod_items. extend ( w_impl_items) ;
381
-
382
- close. to_tokens ( & mut mod_items) ;
383
372
}
384
373
385
374
let doc = format ! (
@@ -461,8 +450,6 @@ fn render_register_mod_debug(
461
450
let name = util:: name_of ( register, config. ignore_groups ) ;
462
451
let span = Span :: call_site ( ) ;
463
452
let regspec_ty = regspec ( & name, config, span) ;
464
- let open = Punct :: new ( '{' , Spacing :: Alone ) ;
465
- let close = Punct :: new ( '}' , Spacing :: Alone ) ;
466
453
let mut r_debug_impl = TokenStream :: new ( ) ;
467
454
let debug_feature = config
468
455
. impl_debug_feature
@@ -473,8 +460,14 @@ fn render_register_mod_debug(
473
460
if access. can_read ( ) && register. read_action . is_none ( ) {
474
461
r_debug_impl. extend ( quote ! {
475
462
#debug_feature
476
- impl core:: fmt:: Debug for R #open
477
- fn fmt( & self , f: & mut core:: fmt:: Formatter ) -> core:: fmt:: Result #open
463
+ impl core:: fmt:: Debug for R
464
+ } ) ;
465
+ let mut fmt_outer_impl = TokenStream :: new ( ) ;
466
+ fmt_outer_impl. extend ( quote ! {
467
+ fn fmt( & self , f: & mut core:: fmt:: Formatter ) -> core:: fmt:: Result
468
+ } ) ;
469
+ let mut fmt_inner_impl = TokenStream :: new ( ) ;
470
+ fmt_inner_impl. extend ( quote ! {
478
471
f. debug_struct( #name)
479
472
} ) ;
480
473
for & f in cur_fields. iter ( ) {
@@ -488,25 +481,27 @@ fn render_register_mod_debug(
488
481
for suffix in de. indexes ( ) {
489
482
let f_name_n = field_accessor ( & f. name . expand_dim ( & suffix) , config, span) ;
490
483
let f_name_n_s = format ! ( "{f_name_n}" ) ;
491
- r_debug_impl . extend ( quote ! {
484
+ fmt_inner_impl . extend ( quote ! {
492
485
. field( #f_name_n_s, & self . #f_name_n( ) )
493
486
} ) ;
494
487
}
495
488
} else {
496
489
let f_name = f. name . remove_dim ( ) ;
497
490
let f_name = field_accessor ( & f_name, config, span) ;
498
491
let f_name_s = format ! ( "{f_name}" ) ;
499
- r_debug_impl . extend ( quote ! {
492
+ fmt_inner_impl . extend ( quote ! {
500
493
. field( #f_name_s, & self . #f_name( ) )
501
494
} ) ;
502
495
}
503
496
}
504
497
}
505
- r_debug_impl . extend ( quote ! {
498
+ fmt_inner_impl . extend ( quote ! {
506
499
. finish( )
507
- #close
508
- #close
509
500
} ) ;
501
+ let fmt_inner_group = Group :: new ( Delimiter :: Brace , fmt_inner_impl) ;
502
+ fmt_outer_impl. extend ( quote ! { #fmt_inner_group } ) ;
503
+ let fmt_outer_group = Group :: new ( Delimiter :: Brace , fmt_outer_impl) ;
504
+ r_debug_impl. extend ( quote ! { #fmt_outer_group } ) ;
510
505
} else if !access. can_read ( ) || register. read_action . is_some ( ) {
511
506
r_debug_impl. extend ( quote ! {
512
507
#debug_feature
0 commit comments