1
1
use std:: borrow:: Cow ;
2
2
use std:: cmp:: Ordering ;
3
3
4
- use either:: Either ;
5
4
use quote:: { ToTokens , Tokens } ;
6
- use crate :: svd:: { Cluster , ClusterInfo , Defaults , Peripheral , Register } ;
5
+ use crate :: svd:: { Cluster , ClusterInfo , Defaults , Peripheral , Register , RegisterCluster } ;
7
6
use syn:: { self , Ident } ;
8
7
use log:: warn;
9
8
@@ -131,9 +130,9 @@ impl Region {
131
130
let mut idents: Vec < _ > = self
132
131
. fields
133
132
. iter ( )
134
- . filter_map ( |f| match f. field . ident {
133
+ . filter_map ( |f| match & f. field . ident {
135
134
None => None ,
136
- Some ( ref ident) => Some ( ident. as_ref ( ) ) ,
135
+ Some ( ident) => Some ( ident. as_ref ( ) ) ,
137
136
} )
138
137
. collect ( ) ;
139
138
if idents. is_empty ( ) {
@@ -172,9 +171,9 @@ impl Region {
172
171
let idents: Vec < _ > = self
173
172
. fields
174
173
. iter ( )
175
- . filter_map ( |f| match f. field . ident {
174
+ . filter_map ( |f| match & f. field . ident {
176
175
None => None ,
177
- Some ( ref ident) => Some ( ident. as_ref ( ) ) ,
176
+ Some ( ident) => Some ( ident. as_ref ( ) ) ,
178
177
} )
179
178
. collect ( ) ;
180
179
@@ -356,7 +355,7 @@ impl FieldRegions {
356
355
}
357
356
358
357
fn register_or_cluster_block (
359
- ercs : & [ Either < Register , Cluster > ] ,
358
+ ercs : & [ RegisterCluster ] ,
360
359
defs : & Defaults ,
361
360
name : Option < & str > ,
362
361
nightly : bool ,
@@ -369,7 +368,7 @@ fn register_or_cluster_block(
369
368
}
370
369
371
370
fn register_or_cluster_block_stable (
372
- ercs : & [ Either < Register , Cluster > ] ,
371
+ ercs : & [ RegisterCluster ] ,
373
372
defs : & Defaults ,
374
373
name : Option < & str > ,
375
374
) -> Result < Tokens > {
@@ -433,7 +432,7 @@ fn register_or_cluster_block_stable(
433
432
}
434
433
435
434
fn register_or_cluster_block_nightly (
436
- ercs : & [ Either < Register , Cluster > ] ,
435
+ ercs : & [ RegisterCluster ] ,
437
436
defs : & Defaults ,
438
437
name : Option < & str > ,
439
438
) -> Result < Tokens > {
@@ -552,16 +551,16 @@ fn register_or_cluster_block_nightly(
552
551
/// Expand a list of parsed `Register`s or `Cluster`s, and render them to
553
552
/// `RegisterBlockField`s containing `Field`s.
554
553
fn expand (
555
- ercs : & [ Either < Register , Cluster > ] ,
554
+ ercs : & [ RegisterCluster ] ,
556
555
defs : & Defaults ,
557
556
name : Option < & str > ,
558
557
) -> Result < Vec < RegisterBlockField > > {
559
558
let mut ercs_expanded = vec ! [ ] ;
560
559
561
560
for erc in ercs {
562
- ercs_expanded. extend ( match erc {
563
- Either :: Left ( ref register) => expand_register ( register, defs, name) ?,
564
- Either :: Right ( ref cluster) => expand_cluster ( cluster, defs) ?,
561
+ ercs_expanded. extend ( match & erc {
562
+ RegisterCluster :: Register ( register) => expand_register ( register, defs, name) ?,
563
+ RegisterCluster :: Cluster ( cluster) => expand_cluster ( cluster, defs) ?,
565
564
} ) ;
566
565
}
567
566
@@ -576,16 +575,16 @@ fn cluster_size_in_bits(info: &ClusterInfo, defs: &Defaults) -> Result<u32> {
576
575
let mut size = 0 ;
577
576
578
577
for c in & info. children {
579
- let end = match * c {
580
- Either :: Left ( ref reg) => {
578
+ let end = match c {
579
+ RegisterCluster :: Register ( reg) => {
581
580
let reg_size: u32 = expand_register ( reg, defs, None ) ?
582
581
. iter ( )
583
582
. map ( |rbf| rbf. size )
584
583
. sum ( ) ;
585
584
586
585
( reg. address_offset * BITS_PER_BYTE ) + reg_size
587
586
}
588
- Either :: Right ( ref clust) => {
587
+ RegisterCluster :: Cluster ( clust) => {
589
588
( clust. address_offset * BITS_PER_BYTE ) + cluster_size_in_bits ( clust, defs) ?
590
589
}
591
590
} ;
@@ -605,14 +604,14 @@ fn expand_cluster(cluster: &Cluster, defs: &Defaults) -> Result<Vec<RegisterBloc
605
604
. or_else ( |_e| cluster_size_in_bits ( cluster, defs) )
606
605
. chain_err ( || format ! ( "Cluster {} has no determinable `size` field" , cluster. name) ) ?;
607
606
608
- match * cluster {
609
- Cluster :: Single ( ref info) => cluster_expanded. push ( RegisterBlockField {
607
+ match cluster {
608
+ Cluster :: Single ( info) => cluster_expanded. push ( RegisterBlockField {
610
609
field : convert_svd_cluster ( cluster) ,
611
610
description : info. description . clone ( ) ,
612
611
offset : info. address_offset ,
613
612
size : cluster_size,
614
613
} ) ,
615
- Cluster :: Array ( ref info, ref array_info) => {
614
+ Cluster :: Array ( info, array_info) => {
616
615
let sequential_addresses = cluster_size == array_info. dim_increment * BITS_PER_BYTE ;
617
616
618
617
// if dimIndex exists, test if it is a sequence of numbers from 0 to dim
@@ -662,14 +661,14 @@ fn expand_register(
662
661
. or ( defs. size )
663
662
. ok_or_else ( || format ! ( "Register {} has no `size` field" , register. name) ) ?;
664
663
665
- match * register {
666
- Register :: Single ( ref info) => register_expanded. push ( RegisterBlockField {
664
+ match register {
665
+ Register :: Single ( info) => register_expanded. push ( RegisterBlockField {
667
666
field : convert_svd_register ( register, name) ,
668
- description : info. description . clone ( ) ,
667
+ description : info. description . clone ( ) . unwrap ( ) ,
669
668
offset : info. address_offset ,
670
669
size : register_size,
671
670
} ) ,
672
- Register :: Array ( ref info, ref array_info) => {
671
+ Register :: Array ( info, array_info) => {
673
672
let sequential_addresses = register_size == array_info. dim_increment * BITS_PER_BYTE ;
674
673
675
674
// if dimIndex exists, test if it is a sequence of numbers from 0 to dim
@@ -685,15 +684,15 @@ fn expand_register(
685
684
if array_convertible {
686
685
register_expanded. push ( RegisterBlockField {
687
686
field : convert_svd_register ( & register, name) ,
688
- description : info. description . clone ( ) ,
687
+ description : info. description . clone ( ) . unwrap ( ) ,
689
688
offset : info. address_offset ,
690
689
size : register_size * array_info. dim ,
691
690
} ) ;
692
691
} else {
693
692
for ( field_num, field) in expand_svd_register ( register, name) . iter ( ) . enumerate ( ) {
694
693
register_expanded. push ( RegisterBlockField {
695
694
field : field. clone ( ) ,
696
- description : info. description . clone ( ) ,
695
+ description : info. description . clone ( ) . unwrap ( ) ,
697
696
offset : info. address_offset + field_num as u32 * array_info. dim_increment ,
698
697
size : register_size,
699
698
} ) ;
@@ -719,9 +718,9 @@ fn cluster_block(
719
718
let description = util:: escape_brackets ( util:: respace ( & c. description ) . as_ref ( ) ) ;
720
719
721
720
// Generate the register block.
722
- let mod_name = match * c {
723
- Cluster :: Single ( ref info) => & info. name ,
724
- Cluster :: Array ( ref info, ref _ai) => & info. name ,
721
+ let mod_name = match c {
722
+ Cluster :: Single ( info) => & info. name ,
723
+ Cluster :: Array ( info, _ai) => & info. name ,
725
724
}
726
725
. replace ( "[%s]" , "" )
727
726
. replace ( "%s" , "" ) ;
@@ -786,9 +785,9 @@ fn expand_svd_register(register: &Register, name: Option<&str>) -> Vec<syn::Fiel
786
785
787
786
let mut out = vec ! [ ] ;
788
787
789
- match * register {
790
- Register :: Single ( ref _info) => out. push ( convert_svd_register ( register, name) ) ,
791
- Register :: Array ( ref info, ref array_info) => {
788
+ match register {
789
+ Register :: Single ( _info) => out. push ( convert_svd_register ( register, name) ) ,
790
+ Register :: Array ( info, array_info) => {
792
791
let has_brackets = info. name . contains ( "[%s]" ) ;
793
792
794
793
let indices = array_info
@@ -857,14 +856,14 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> syn::Field {
857
856
)
858
857
} ;
859
858
860
- match * register {
861
- Register :: Single ( ref info) => syn:: Field {
859
+ match register {
860
+ Register :: Single ( info) => syn:: Field {
862
861
ident : Some ( Ident :: new ( info. name . to_sanitized_snake_case ( ) ) ) ,
863
862
vis : syn:: Visibility :: Public ,
864
863
attrs : vec ! [ ] ,
865
864
ty : name_to_ty ( & info. name , name) ,
866
865
} ,
867
- Register :: Array ( ref info, ref array_info) => {
866
+ Register :: Array ( info, array_info) => {
868
867
let has_brackets = info. name . contains ( "[%s]" ) ;
869
868
870
869
let nb_name = if has_brackets {
@@ -911,9 +910,9 @@ fn expand_svd_cluster(cluster: &Cluster) -> Vec<syn::Field> {
911
910
912
911
let mut out = vec ! [ ] ;
913
912
914
- match * cluster {
915
- Cluster :: Single ( ref _info) => out. push ( convert_svd_cluster ( cluster) ) ,
916
- Cluster :: Array ( ref info, ref array_info) => {
913
+ match & cluster {
914
+ Cluster :: Single ( _info) => out. push ( convert_svd_cluster ( cluster) ) ,
915
+ Cluster :: Array ( info, array_info) => {
917
916
let has_brackets = info. name . contains ( "[%s]" ) ;
918
917
919
918
let indices = array_info
@@ -971,14 +970,14 @@ fn convert_svd_cluster(cluster: &Cluster) -> syn::Field {
971
970
)
972
971
} ;
973
972
974
- match * cluster {
975
- Cluster :: Single ( ref info) => syn:: Field {
973
+ match cluster {
974
+ Cluster :: Single ( info) => syn:: Field {
976
975
ident : Some ( Ident :: new ( info. name . to_sanitized_snake_case ( ) ) ) ,
977
976
vis : syn:: Visibility :: Public ,
978
977
attrs : vec ! [ ] ,
979
978
ty : name_to_ty ( & info. name ) ,
980
979
} ,
981
- Cluster :: Array ( ref info, ref array_info) => {
980
+ Cluster :: Array ( info, array_info) => {
982
981
let has_brackets = info. name . contains ( "[%s]" ) ;
983
982
984
983
let name = if has_brackets {
0 commit comments