@@ -287,9 +287,8 @@ pub struct ArrayAccessor {
287
287
pub i : syn:: LitInt ,
288
288
}
289
289
290
- impl ArrayAccessor {
291
- pub fn to_tokens ( & self , method : bool ) -> TokenStream {
292
- let parens = method. then ( || quote ! { ( ) } ) ;
290
+ impl ToTokens for ArrayAccessor {
291
+ fn to_tokens ( & self , tokens : & mut TokenStream ) {
293
292
let doc = & self . doc ;
294
293
let name = & self . name ;
295
294
let ty = & self . ty ;
@@ -299,9 +298,10 @@ impl ArrayAccessor {
299
298
#[ doc = #doc]
300
299
#[ inline( always) ]
301
300
pub fn #name( & self ) -> & #ty {
302
- & self . #basename #parens [ #i]
301
+ & self . #basename( ) [ #i]
303
302
}
304
303
}
304
+ . to_tokens ( tokens) ;
305
305
}
306
306
}
307
307
@@ -592,11 +592,11 @@ fn register_or_cluster_block(
592
592
reg_block_field. offset ,
593
593
& reg_block_field. description ,
594
594
) ;
595
+ let name = & reg_block_field. syn_field . ident ;
596
+ let ty = & reg_block_field. syn_field . ty ;
597
+ let offset = reg_block_field. offset as usize ;
595
598
596
599
if is_region_a_union {
597
- let name = & reg_block_field. syn_field . ident ;
598
- let ty = & reg_block_field. syn_field . ty ;
599
- let offset = reg_block_field. offset as usize ;
600
600
accessors. extend ( quote ! {
601
601
#[ doc = #comment]
602
602
#[ inline( always) ]
@@ -611,13 +611,17 @@ fn register_or_cluster_block(
611
611
612
612
reg_block_field. syn_field . to_tokens ( & mut region_rbfs) ;
613
613
Punct :: new ( ',' , Spacing :: Alone ) . to_tokens ( & mut region_rbfs) ;
614
+ accessors. extend ( quote ! {
615
+ #[ doc = #comment]
616
+ #[ inline( always) ]
617
+ pub fn #name( & self ) -> & #ty {
618
+ & self . #name
619
+ }
620
+ } ) ;
621
+ }
622
+ for a in & reg_block_field. accessors {
623
+ a. to_tokens ( & mut accessors) ;
614
624
}
615
- accessors. extend (
616
- reg_block_field
617
- . accessors
618
- . iter ( )
619
- . map ( |a| a. to_tokens ( is_region_a_union) ) ,
620
- ) ;
621
625
}
622
626
623
627
if !is_region_a_union {
@@ -1421,9 +1425,20 @@ fn cluster_block(
1421
1425
1422
1426
fn new_syn_field ( ident : Ident , ty : syn:: Type ) -> syn:: Field {
1423
1427
let span = Span :: call_site ( ) ;
1428
+ let mut segments = Punctuated :: new ( ) ;
1429
+ segments. push ( path_segment ( Ident :: new ( "crate" , span) ) ) ;
1430
+ let crate_path = syn:: Path {
1431
+ leading_colon : None ,
1432
+ segments,
1433
+ } ;
1424
1434
syn:: Field {
1425
1435
ident : Some ( ident) ,
1426
- vis : syn:: Visibility :: Public ( Token ! [ pub ] ( span) ) ,
1436
+ vis : syn:: Visibility :: Restricted ( syn:: VisRestricted {
1437
+ pub_token : Token ! [ pub ] ( span) ,
1438
+ paren_token : Default :: default ( ) ,
1439
+ in_token : None ,
1440
+ path : Box :: new ( crate_path) ,
1441
+ } ) ,
1427
1442
attrs : vec ! [ ] ,
1428
1443
colon_token : Some ( Token ! [ : ] ( span) ) ,
1429
1444
ty,
0 commit comments