@@ -439,7 +439,7 @@ fn register_or_cluster_block(
439439 let mut accessors = TokenStream :: new ( ) ;
440440
441441 let ercs_expanded =
442- expand ( ercs, name , config) . with_context ( || "Could not expand register or cluster block" ) ?;
442+ expand ( ercs, config) . with_context ( || "Could not expand register or cluster block" ) ?;
443443
444444 // Locate conflicting regions; we'll need to use unions to represent them.
445445 let mut regions = FieldRegions :: default ( ) ;
@@ -564,17 +564,13 @@ fn register_or_cluster_block(
564564
565565/// Expand a list of parsed `Register`s or `Cluster`s, and render them to
566566/// `RegisterBlockField`s containing `Field`s.
567- fn expand (
568- ercs : & [ RegisterCluster ] ,
569- name : Option < & str > ,
570- config : & Config ,
571- ) -> Result < Vec < RegisterBlockField > > {
567+ fn expand ( ercs : & [ RegisterCluster ] , config : & Config ) -> Result < Vec < RegisterBlockField > > {
572568 let mut ercs_expanded = vec ! [ ] ;
573569
574570 debug ! ( "Expanding registers or clusters into Register Block Fields" ) ;
575571 for erc in ercs {
576572 match & erc {
577- RegisterCluster :: Register ( register) => match expand_register ( register, name , config) {
573+ RegisterCluster :: Register ( register) => match expand_register ( register, config) {
578574 Ok ( expanded_reg) => {
579575 trace ! ( "Register: {}" , register. name) ;
580576 ercs_expanded. extend ( expanded_reg) ;
@@ -584,7 +580,7 @@ fn expand(
584580 return handle_reg_error ( "Error expanding register" , register, res) ;
585581 }
586582 } ,
587- RegisterCluster :: Cluster ( cluster) => match expand_cluster ( cluster, name , config) {
583+ RegisterCluster :: Cluster ( cluster) => match expand_cluster ( cluster, config) {
588584 Ok ( expanded_cluster) => {
589585 trace ! ( "Cluster: {}" , cluster. name) ;
590586 ercs_expanded. extend ( expanded_cluster) ;
@@ -631,7 +627,7 @@ fn cluster_info_size_in_bits(info: &ClusterInfo, config: &Config) -> Result<u32>
631627 for c in & info. children {
632628 let end = match c {
633629 RegisterCluster :: Register ( reg) => {
634- let reg_size: u32 = expand_register ( reg, None , config) ?
630+ let reg_size: u32 = expand_register ( reg, config) ?
635631 . iter ( )
636632 . map ( |rbf| rbf. size )
637633 . sum ( ) ;
@@ -649,19 +645,15 @@ fn cluster_info_size_in_bits(info: &ClusterInfo, config: &Config) -> Result<u32>
649645}
650646
651647/// Render a given cluster (and any children) into `RegisterBlockField`s
652- fn expand_cluster (
653- cluster : & Cluster ,
654- name : Option < & str > ,
655- config : & Config ,
656- ) -> Result < Vec < RegisterBlockField > > {
648+ fn expand_cluster ( cluster : & Cluster , config : & Config ) -> Result < Vec < RegisterBlockField > > {
657649 let mut cluster_expanded = vec ! [ ] ;
658650
659651 let cluster_size = cluster_info_size_in_bits ( cluster, config)
660652 . with_context ( || format ! ( "Cluster {} has no determinable `size` field" , cluster. name) ) ?;
661653
662654 match cluster {
663655 Cluster :: Single ( info) => cluster_expanded. push ( RegisterBlockField {
664- syn_field : convert_svd_cluster ( cluster, name ) ?,
656+ syn_field : convert_svd_cluster ( cluster) ?,
665657 description : info. description . as_ref ( ) . unwrap_or ( & info. name ) . into ( ) ,
666658 offset : info. address_offset ,
667659 size : cluster_size,
@@ -690,7 +682,7 @@ fn expand_cluster(
690682 if array_convertible {
691683 if sequential_indexes_from0 {
692684 cluster_expanded. push ( RegisterBlockField {
693- syn_field : convert_svd_cluster ( cluster, name ) ?,
685+ syn_field : convert_svd_cluster ( cluster) ?,
694686 description : info. description . as_ref ( ) . unwrap_or ( & info. name ) . into ( ) ,
695687 offset : info. address_offset ,
696688 size : cluster_size * array_info. dim ,
@@ -700,7 +692,7 @@ fn expand_cluster(
700692 let span = Span :: call_site ( ) ;
701693 let mut accessors = TokenStream :: new ( ) ;
702694 let nb_name = util:: replace_suffix ( & info. name , "" ) ;
703- let ty = name_to_ty ( & nb_name, name ) ?;
695+ let ty = name_to_ty ( & nb_name) ?;
704696 let nb_name_cs = nb_name. to_snake_case_ident ( span) ;
705697 let description = info. description . as_ref ( ) . unwrap_or ( & info. name ) ;
706698 for ( i, idx) in array_info. indexes ( ) . enumerate ( ) {
@@ -721,7 +713,7 @@ fn expand_cluster(
721713 } ) ;
722714 }
723715 cluster_expanded. push ( RegisterBlockField {
724- syn_field : convert_svd_cluster ( cluster, name ) ?,
716+ syn_field : convert_svd_cluster ( cluster) ?,
725717 description : description. into ( ) ,
726718 offset : info. address_offset ,
727719 size : cluster_size * array_info. dim ,
@@ -731,11 +723,9 @@ fn expand_cluster(
731723 } else if sequential_indexes_from0 && config. const_generic {
732724 // Include a ZST ArrayProxy giving indexed access to the
733725 // elements.
734- cluster_expanded. push ( array_proxy ( info, array_info, name ) ?) ;
726+ cluster_expanded. push ( array_proxy ( info, array_info) ?) ;
735727 } else {
736- for ( field_num, syn_field) in
737- expand_svd_cluster ( cluster, name) ?. into_iter ( ) . enumerate ( )
738- {
728+ for ( field_num, syn_field) in expand_svd_cluster ( cluster) ?. into_iter ( ) . enumerate ( ) {
739729 cluster_expanded. push ( RegisterBlockField {
740730 syn_field,
741731 description : info. description . as_ref ( ) . unwrap_or ( & info. name ) . into ( ) ,
@@ -753,11 +743,7 @@ fn expand_cluster(
753743
754744/// If svd register arrays can't be converted to rust arrays (non sequential addresses, non
755745/// numeral indexes, or not containing all elements from 0 to size) they will be expanded
756- fn expand_register (
757- register : & Register ,
758- name : Option < & str > ,
759- config : & Config ,
760- ) -> Result < Vec < RegisterBlockField > > {
746+ fn expand_register ( register : & Register , config : & Config ) -> Result < Vec < RegisterBlockField > > {
761747 let mut register_expanded = vec ! [ ] ;
762748
763749 let register_size = register
@@ -767,7 +753,7 @@ fn expand_register(
767753
768754 match register {
769755 Register :: Single ( info) => register_expanded. push ( RegisterBlockField {
770- syn_field : convert_svd_register ( register, name , config. ignore_groups )
756+ syn_field : convert_svd_register ( register, config. ignore_groups )
771757 . with_context ( || "syn error occured" ) ?,
772758 description : info. description . clone ( ) . unwrap_or_default ( ) ,
773759 offset : info. address_offset ,
@@ -797,7 +783,7 @@ fn expand_register(
797783
798784 if sequential_indexes_from0 {
799785 register_expanded. push ( RegisterBlockField {
800- syn_field : convert_svd_register ( register, name , config. ignore_groups ) ?,
786+ syn_field : convert_svd_register ( register, config. ignore_groups ) ?,
801787 description : info. description . clone ( ) . unwrap_or_default ( ) ,
802788 offset : info. address_offset ,
803789 size : register_size * array_info. dim ,
@@ -807,7 +793,7 @@ fn expand_register(
807793 let span = Span :: call_site ( ) ;
808794 let mut accessors = TokenStream :: new ( ) ;
809795 let nb_name = util:: replace_suffix ( & info. fullname ( config. ignore_groups ) , "" ) ;
810- let ty = name_to_wrapped_ty ( & nb_name, name ) ?;
796+ let ty = name_to_wrapped_ty ( & nb_name) ?;
811797 let nb_name_cs = nb_name. to_snake_case_ident ( span) ;
812798 let description = info. description . clone ( ) . unwrap_or_default ( ) ;
813799 let info_name = info. fullname ( config. ignore_groups ) ;
@@ -829,18 +815,17 @@ fn expand_register(
829815 } ) ;
830816 }
831817 register_expanded. push ( RegisterBlockField {
832- syn_field : convert_svd_register ( register, name , config. ignore_groups ) ?,
818+ syn_field : convert_svd_register ( register, config. ignore_groups ) ?,
833819 description,
834820 offset : info. address_offset ,
835821 size : register_size * array_info. dim ,
836822 accessors : Some ( accessors) ,
837823 } ) ;
838824 }
839825 } else {
840- for ( field_num, syn_field) in
841- expand_svd_register ( register, name, config. ignore_groups ) ?
842- . into_iter ( )
843- . enumerate ( )
826+ for ( field_num, syn_field) in expand_svd_register ( register, config. ignore_groups ) ?
827+ . into_iter ( )
828+ . enumerate ( )
844829 {
845830 register_expanded. push ( RegisterBlockField {
846831 syn_field,
@@ -911,13 +896,7 @@ fn cluster_block(
911896 let mod_items = render_ercs ( & mut c. children , path, index, config) ?;
912897
913898 // Generate the register block.
914- let mod_name = util:: replace_suffix (
915- match c {
916- Cluster :: Single ( info) => & info. name ,
917- Cluster :: Array ( info, _ai) => & info. name ,
918- } ,
919- "" ,
920- ) ;
899+ let mod_name = util:: replace_suffix ( & c. name , "" ) ;
921900
922901 let reg_block = register_or_cluster_block ( & c. children , Some ( & mod_name) , config) ?;
923902
@@ -928,31 +907,27 @@ fn cluster_block(
928907 let name_snake_case = mod_name. to_snake_case_ident ( Span :: call_site ( ) ) ;
929908
930909 Ok ( quote ! {
931- #reg_block
932-
933- ///Register block
910+ ///Cluster
934911 #[ doc = #description]
935912 pub mod #name_snake_case {
913+ #reg_block
914+
936915 #mod_items
937916 }
938917 } )
939918}
940919
941920/// Takes a svd::Register which may be a register array, and turn in into
942921/// a list of syn::Field where the register arrays have been expanded.
943- fn expand_svd_register (
944- register : & Register ,
945- name : Option < & str > ,
946- ignore_group : bool ,
947- ) -> Result < Vec < syn:: Field > > {
922+ fn expand_svd_register ( register : & Register , ignore_group : bool ) -> Result < Vec < syn:: Field > > {
948923 if let Register :: Array ( info, array_info) = register {
949924 let ty_name = util:: replace_suffix ( & info. fullname ( ignore_group) , "" ) ;
950925
951926 let mut out = vec ! [ ] ;
952927 for idx in array_info. indexes ( ) {
953928 let nb_name = util:: replace_suffix ( & info. fullname ( ignore_group) , & idx) ;
954929
955- let ty = name_to_wrapped_ty ( & ty_name, name ) ?;
930+ let ty = name_to_wrapped_ty ( & ty_name) ?;
956931
957932 out. push ( new_syn_field (
958933 nb_name. to_snake_case_ident ( Span :: call_site ( ) ) ,
@@ -961,27 +936,23 @@ fn expand_svd_register(
961936 }
962937 Ok ( out)
963938 } else {
964- Ok ( vec ! [ convert_svd_register( register, name , ignore_group) ?] )
939+ Ok ( vec ! [ convert_svd_register( register, ignore_group) ?] )
965940 }
966941}
967942
968943/// Convert a parsed `Register` into its `Field` equivalent
969- fn convert_svd_register (
970- register : & Register ,
971- name : Option < & str > ,
972- ignore_group : bool ,
973- ) -> Result < syn:: Field > {
944+ fn convert_svd_register ( register : & Register , ignore_group : bool ) -> Result < syn:: Field > {
974945 Ok ( match register {
975946 Register :: Single ( info) => {
976947 let info_name = info. fullname ( ignore_group) ;
977- let ty = name_to_wrapped_ty ( & info_name, name )
948+ let ty = name_to_wrapped_ty ( & info_name)
978949 . with_context ( || format ! ( "Error converting register name {info_name}" ) ) ?;
979950 new_syn_field ( info_name. to_snake_case_ident ( Span :: call_site ( ) ) , ty)
980951 }
981952 Register :: Array ( info, array_info) => {
982953 let info_name = info. fullname ( ignore_group) ;
983954 let nb_name = util:: replace_suffix ( & info_name, "" ) ;
984- let ty = name_to_wrapped_ty ( & nb_name, name )
955+ let ty = name_to_wrapped_ty ( & nb_name)
985956 . with_context ( || format ! ( "Error converting register name {nb_name}" ) ) ?;
986957 let array_ty = new_syn_array ( ty, array_info. dim ) ;
987958
@@ -994,10 +965,9 @@ fn convert_svd_register(
994965fn array_proxy (
995966 info : & ClusterInfo ,
996967 array_info : & DimElement ,
997- name : Option < & str > ,
998968) -> Result < RegisterBlockField , syn:: Error > {
999969 let ty_name = util:: replace_suffix ( & info. name , "" ) ;
1000- let tys = name_to_ty_str ( & ty_name, name ) ;
970+ let tys = name_to_ty_str ( & ty_name) ;
1001971
1002972 let ap_path = parse_str :: < syn:: TypePath > ( & format ! (
1003973 "crate::ArrayProxy<{tys}, {}, {}>" ,
@@ -1019,18 +989,15 @@ fn array_proxy(
1019989
1020990/// Takes a svd::Cluster which may contain a register array, and turn it into
1021991/// a list of syn::Field where the register arrays have been expanded.
1022- fn expand_svd_cluster (
1023- cluster : & Cluster ,
1024- name : Option < & str > ,
1025- ) -> Result < Vec < syn:: Field > , syn:: Error > {
992+ fn expand_svd_cluster ( cluster : & Cluster ) -> Result < Vec < syn:: Field > , syn:: Error > {
1026993 if let Cluster :: Array ( info, array_info) = cluster {
1027994 let ty_name = util:: replace_suffix ( & info. name , "" ) ;
1028995
1029996 let mut out = vec ! [ ] ;
1030997 for idx in array_info. indexes ( ) {
1031998 let nb_name = util:: replace_suffix ( & info. name , & idx) ;
1032999
1033- let ty = name_to_ty ( & ty_name, name ) ?;
1000+ let ty = name_to_ty ( & ty_name) ?;
10341001
10351002 out. push ( new_syn_field (
10361003 nb_name. to_snake_case_ident ( Span :: call_site ( ) ) ,
@@ -1039,21 +1006,21 @@ fn expand_svd_cluster(
10391006 }
10401007 Ok ( out)
10411008 } else {
1042- Ok ( vec ! [ convert_svd_cluster( cluster, name ) ?] )
1009+ Ok ( vec ! [ convert_svd_cluster( cluster) ?] )
10431010 }
10441011}
10451012
10461013/// Convert a parsed `Cluster` into its `Field` equivalent
1047- fn convert_svd_cluster ( cluster : & Cluster , name : Option < & str > ) -> Result < syn:: Field , syn:: Error > {
1014+ fn convert_svd_cluster ( cluster : & Cluster ) -> Result < syn:: Field , syn:: Error > {
10481015 Ok ( match cluster {
10491016 Cluster :: Single ( info) => {
10501017 let ty_name = util:: replace_suffix ( & info. name , "" ) ;
1051- let ty = name_to_ty ( & ty_name, name ) ?;
1018+ let ty = name_to_ty ( & ty_name) ?;
10521019 new_syn_field ( info. name . to_snake_case_ident ( Span :: call_site ( ) ) , ty)
10531020 }
10541021 Cluster :: Array ( info, array_info) => {
10551022 let ty_name = util:: replace_suffix ( & info. name , "" ) ;
1056- let ty = name_to_ty ( & ty_name, name ) ?;
1023+ let ty = name_to_ty ( & ty_name) ?;
10571024 let array_ty = new_syn_array ( ty, array_info. dim ) ;
10581025
10591026 new_syn_field ( ty_name. to_snake_case_ident ( Span :: call_site ( ) ) , array_ty)
@@ -1091,43 +1058,29 @@ fn new_syn_u32(len: u32, span: Span) -> syn::Expr {
10911058 } )
10921059}
10931060
1094- fn name_to_ty_str < ' a , ' b > ( name : & ' a str , ns : Option < & ' b str > ) -> Cow < ' a , str > {
1095- if let Some ( ns) = ns {
1096- Cow :: Owned (
1097- String :: from ( "self::" )
1098- + & ns. to_sanitized_snake_case ( )
1099- + "::"
1100- + & name. to_sanitized_constant_case ( ) ,
1101- )
1102- } else {
1061+ fn name_to_ty_str ( name : & str ) -> String {
1062+ format ! (
1063+ "{}::{}" ,
1064+ name. to_sanitized_snake_case( ) ,
11031065 name. to_sanitized_constant_case( )
1104- }
1066+ )
11051067}
11061068
1107- fn name_to_ty ( name : & str , ns : Option < & str > ) -> Result < syn:: Type , syn:: Error > {
1108- let ident = name_to_ty_str ( name, ns ) ;
1069+ fn name_to_ty ( name : & str ) -> Result < syn:: Type , syn:: Error > {
1070+ let ident = name_to_ty_str ( name) ;
11091071 parse_str :: < syn:: TypePath > ( & ident) . map ( syn:: Type :: Path )
11101072}
11111073
1112- fn name_to_wrapped_ty_str ( name : & str , ns : Option < & str > ) -> String {
1113- if let Some ( ns) = ns {
1114- format ! (
1115- "crate::Reg<self::{}::{}::{}_SPEC>" ,
1116- & ns. to_sanitized_snake_case( ) ,
1117- & name. to_sanitized_snake_case( ) ,
1118- & name. to_sanitized_constant_case( ) ,
1119- )
1120- } else {
1121- format ! (
1122- "crate::Reg<{}::{}_SPEC>" ,
1123- & name. to_sanitized_snake_case( ) ,
1124- & name. to_sanitized_constant_case( ) ,
1125- )
1126- }
1074+ fn name_to_wrapped_ty_str ( name : & str ) -> String {
1075+ format ! (
1076+ "crate::Reg<{}::{}_SPEC>" ,
1077+ & name. to_sanitized_snake_case( ) ,
1078+ & name. to_sanitized_constant_case( ) ,
1079+ )
11271080}
11281081
1129- fn name_to_wrapped_ty ( name : & str , ns : Option < & str > ) -> Result < syn:: Type > {
1130- let ident = name_to_wrapped_ty_str ( name, ns ) ;
1082+ fn name_to_wrapped_ty ( name : & str ) -> Result < syn:: Type > {
1083+ let ident = name_to_wrapped_ty_str ( name) ;
11311084 parse_str :: < syn:: TypePath > ( & ident)
11321085 . map ( syn:: Type :: Path )
11331086 . map_err ( anyhow:: Error :: from)
0 commit comments