11use crate :: svd:: {
2- Access , BitRange , RegisterProperties , EnumeratedValues , Field , Peripheral , Register , RegisterCluster ,
3- Usage , WriteConstraint ,
2+ Access , BitRange , EnumeratedValues , Field , Peripheral , Register , RegisterCluster ,
3+ RegisterProperties , Usage , WriteConstraint ,
44} ;
55use cast:: u64;
66use log:: warn;
7- use proc_macro2:: { TokenStream , Ident , Span , Punct , Spacing } ;
7+ use proc_macro2:: { Ident , Punct , Spacing , Span , TokenStream } ;
88
99use crate :: errors:: * ;
1010use crate :: util:: { self , ToSanitizedSnakeCase , ToSanitizedUpperCase , U32Ext } ;
@@ -59,10 +59,7 @@ pub fn render(
5959 methods. push ( "read" ) ;
6060 }
6161
62- let res_val = register
63- . reset_value
64- . or ( defs. reset_value )
65- . map ( |v| v as u64 ) ;
62+ let res_val = register. reset_value . or ( defs. reset_value ) . map ( |v| v as u64 ) ;
6663 if can_write {
6764 let desc = format ! ( "Writer for register {}" , register. name) ;
6865 mod_items. push ( quote ! {
@@ -151,12 +148,19 @@ pub fn render(
151148 }
152149
153150 let mut out = TokenStream :: new ( ) ;
154- let methods = methods. iter ( ) . map ( |s| format ! ( "[`{0}`](crate::generic::Reg::{0})" , s) ) . collect :: < Vec < _ > > ( ) ;
151+ let methods = methods
152+ . iter ( )
153+ . map ( |s| format ! ( "[`{0}`](crate::generic::Reg::{0})" , s) )
154+ . collect :: < Vec < _ > > ( ) ;
155155 let mut doc = format ! ( "{}\n \n This register you can {}. See [API](https://docs.rs/svd2rust/#read--modify--write-api)." ,
156156 & description, methods. join( ", " ) ) ;
157157
158158 if name_sc != "cfg" {
159- doc += format ! ( "\n \n For information about available fields see [{0}]({0}) module" , & name_sc) . as_str ( ) ;
159+ doc += format ! (
160+ "\n \n For information about available fields see [{0}]({0}) module" ,
161+ & name_sc
162+ )
163+ . as_str ( ) ;
160164 }
161165 out. extend ( quote ! {
162166 #[ doc = #doc]
@@ -168,14 +172,20 @@ pub fn render(
168172 } ) ;
169173
170174 if can_read {
171- let doc = format ! ( "`read()` method returns [{0}::R]({0}::R) reader structure" , & name_sc) ;
175+ let doc = format ! (
176+ "`read()` method returns [{0}::R]({0}::R) reader structure" ,
177+ & name_sc
178+ ) ;
172179 out. extend ( quote ! {
173180 #[ doc = #doc]
174181 impl crate :: Readable for #name_pc { }
175182 } ) ;
176183 }
177184 if can_write {
178- let doc = format ! ( "`write(|w| ..)` method takes [{0}::W]({0}::W) writer structure" , & name_sc) ;
185+ let doc = format ! (
186+ "`write(|w| ..)` method takes [{0}::W]({0}::W) writer structure" ,
187+ & name_sc
188+ ) ;
179189 out. extend ( quote ! {
180190 #[ doc = #doc]
181191 impl crate :: Writable for #name_pc { }
@@ -216,11 +226,7 @@ pub fn fields(
216226 impl < ' a > F < ' a > {
217227 fn from ( f : & ' a Field ) -> Result < Self > {
218228 // TODO(AJM) - do we need to do anything with this range type?
219- let BitRange {
220- offset,
221- width,
222- range_type : _,
223- } = f. bit_range ;
229+ let BitRange { offset, width, .. } = f. bit_range ;
224230 let sc = f. name . to_sanitized_snake_case ( ) ;
225231 let pc = f. name . to_sanitized_upper_case ( ) ;
226232 let span = Span :: call_site ( ) ;
@@ -229,11 +235,7 @@ pub fn fields(
229235 let pc_w = Ident :: new ( & format ! ( "{}_AW" , pc) , span) ;
230236 let _pc_w = Ident :: new ( & format ! ( "{}_W" , pc) , span) ;
231237 let _sc = Ident :: new ( & format ! ( "_{}" , sc) , span) ;
232- let bits = Ident :: new ( if width == 1 {
233- "bit"
234- } else {
235- "bits"
236- } , Span :: call_site ( ) ) ;
238+ let bits = Ident :: new ( if width == 1 { "bit" } else { "bits" } , Span :: call_site ( ) ) ;
237239 let mut description_with_bits = if width == 1 {
238240 format ! ( "Bit {}" , offset)
239241 } else {
@@ -262,7 +264,7 @@ pub fn fields(
262264 access : f. access ,
263265 evs : & f. enumerated_values ,
264266 sc : Ident :: new ( & sc, Span :: call_site ( ) ) ,
265- mask : 1u64 . wrapping_neg ( ) >> ( 64 - width) ,
267+ mask : 1u64 . wrapping_neg ( ) >> ( 64 - width) ,
266268 name : & f. name ,
267269 offset : u64:: from ( offset) ,
268270 ty : width. to_ty ( ) ?,
@@ -296,7 +298,6 @@ pub fn fields(
296298 all_peripherals,
297299 ) ?;
298300
299-
300301 let pc_r = & f. pc_r ;
301302 let mut pc_w = & f. pc_r ;
302303
@@ -340,7 +341,8 @@ pub fn fields(
340341 base_pc_w = base. as_ref ( ) . map ( |base| {
341342 let pc = base. field . to_sanitized_upper_case ( ) ;
342343 let base_pc_r = Ident :: new ( & format ! ( "{}_A" , pc) , Span :: call_site ( ) ) ;
343- let base_pc_r = derive_from_base ( mod_items, & base, & pc_r, & base_pc_r, description) ;
344+ let base_pc_r =
345+ derive_from_base ( mod_items, & base, & pc_r, & base_pc_r, description) ;
344346
345347 let doc = format ! ( "Reader of field `{}`" , f. name) ;
346348 mod_items. push ( quote ! {
@@ -410,11 +412,14 @@ pub fn fields(
410412 let pc = & v. pc ;
411413 let sc = & v. sc ;
412414
413- let is_variant = Ident :: new ( & if sc. to_string ( ) . starts_with ( '_' ) {
414- format ! ( "is{}" , sc)
415- } else {
416- format ! ( "is_{}" , sc)
417- } , Span :: call_site ( ) ) ;
415+ let is_variant = Ident :: new (
416+ & if sc. to_string ( ) . starts_with ( '_' ) {
417+ format ! ( "is{}" , sc)
418+ } else {
419+ format ! ( "is_{}" , sc)
420+ } ,
421+ Span :: call_site ( ) ,
422+ ) ;
418423
419424 let doc = format ! ( "Checks if the value of the field is `{}`" , pc) ;
420425 enum_items. push ( quote ! {
@@ -435,7 +440,6 @@ pub fn fields(
435440 }
436441 } ) ;
437442 }
438-
439443 } else {
440444 let sc = & f. sc ;
441445 r_impl_items. push ( quote ! {
@@ -451,7 +455,6 @@ pub fn fields(
451455 #[ doc = #doc]
452456 pub type #_pc_r = crate :: R <#fty, #fty>;
453457 } )
454-
455458 }
456459 }
457460
@@ -583,7 +586,8 @@ pub fn fields(
583586fn unsafety ( write_constraint : Option < & WriteConstraint > , width : u32 ) -> Option < Ident > {
584587 match & write_constraint {
585588 Some ( & WriteConstraint :: Range ( range) )
586- if u64:: from ( range. min ) == 0 && u64:: from ( range. max ) == 1u64 . wrapping_neg ( ) >> ( 64 -width) =>
589+ if u64:: from ( range. min ) == 0
590+ && u64:: from ( range. max ) == 1u64 . wrapping_neg ( ) >> ( 64 - width) =>
587591 {
588592 // the SVD has acknowledged that it's safe to write
589593 // any value that can fit in the field
@@ -633,11 +637,18 @@ impl Variant {
633637 }
634638}
635639
636- fn add_from_variants ( mod_items : & mut Vec < TokenStream > , variants : & Vec < Variant > , pc : & Ident , f : & F , desc : & str , reset_value : Option < u64 > ) {
640+ fn add_from_variants (
641+ mod_items : & mut Vec < TokenStream > ,
642+ variants : & [ Variant ] ,
643+ pc : & Ident ,
644+ f : & F ,
645+ desc : & str ,
646+ reset_value : Option < u64 > ,
647+ ) {
637648 let fty = & f. ty ;
638649
639650 let ( repr, cast) = if f. ty == "bool" {
640- ( quote ! { } , quote ! { variant as u8 != 0 } )
651+ ( quote ! { } , quote ! { variant as u8 != 0 } )
641652 } else {
642653 ( quote ! { #[ repr( #fty) ] } , quote ! { variant as _ } )
643654 } ;
@@ -677,7 +688,13 @@ fn add_from_variants(mod_items: &mut Vec<TokenStream>, variants: &Vec<Variant>,
677688 } ) ;
678689}
679690
680- fn derive_from_base ( mod_items : & mut Vec < TokenStream > , base : & Base , pc : & Ident , base_pc : & Ident , desc : & str ) -> TokenStream {
691+ fn derive_from_base (
692+ mod_items : & mut Vec < TokenStream > ,
693+ base : & Base ,
694+ pc : & Ident ,
695+ base_pc : & Ident ,
696+ desc : & str ,
697+ ) -> TokenStream {
681698 let span = Span :: call_site ( ) ;
682699 if let ( Some ( peripheral) , Some ( register) ) = ( & base. peripheral , & base. register ) {
683700 let pmod_ = peripheral. to_sanitized_snake_case ( ) ;
@@ -799,7 +816,7 @@ fn lookup<'a>(
799816}
800817
801818fn lookup_filter < ' a > (
802- evs : & Vec < ( & ' a EnumeratedValues , Option < Base < ' a > > ) > ,
819+ evs : & [ ( & ' a EnumeratedValues , Option < Base < ' a > > ) ] ,
803820 usage : Usage ,
804821) -> Option < ( & ' a EnumeratedValues , Option < Base < ' a > > ) > {
805822 for ( evs, base) in evs. iter ( ) {
@@ -818,12 +835,13 @@ fn lookup_in_fields<'f>(
818835 register : & Register ,
819836) -> Result < ( & ' f EnumeratedValues , Option < Base < ' f > > ) > {
820837 if let Some ( base_field) = fields. iter ( ) . find ( |f| f. name == base_field) {
821- return lookup_in_field ( base_evs, None , None , base_field) ;
838+ lookup_in_field ( base_evs, None , None , base_field)
822839 } else {
823840 Err ( format ! (
824841 "Field {} not found in register {}" ,
825842 base_field, register. name
826- ) ) ?
843+ )
844+ . into ( ) )
827845 }
828846}
829847
@@ -846,16 +864,14 @@ fn lookup_in_peripheral<'p>(
846864 {
847865 lookup_in_field ( base_evs, Some ( base_register) , base_peripheral, field)
848866 } else {
849- Err ( format ! (
850- "No field {} in register {}" ,
851- base_field, register. name
852- ) ) ?
867+ Err ( format ! ( "No field {} in register {}" , base_field, register. name) . into ( ) )
853868 }
854869 } else {
855870 Err ( format ! (
856871 "No register {} in peripheral {}" ,
857872 base_register, peripheral. name
858- ) ) ?
873+ )
874+ . into ( ) )
859875 }
860876}
861877
@@ -878,10 +894,7 @@ fn lookup_in_field<'f>(
878894 }
879895 }
880896
881- Err ( format ! (
882- "No EnumeratedValues {} in field {}" ,
883- base_evs, field. name
884- ) ) ?
897+ Err ( format ! ( "No EnumeratedValues {} in field {}" , base_evs, field. name) . into ( ) )
885898}
886899
887900fn lookup_in_register < ' r > (
@@ -904,7 +917,8 @@ fn lookup_in_register<'r>(
904917 None => Err ( format ! (
905918 "EnumeratedValues {} not found in register {}" ,
906919 base_evs, register. name
907- ) ) ?,
920+ )
921+ . into ( ) ) ,
908922 Some ( & ( evs, field) ) => {
909923 if matches. len ( ) == 1 {
910924 Ok ( (
@@ -921,7 +935,8 @@ fn lookup_in_register<'r>(
921935 "Fields {:?} have an \
922936 enumeratedValues named {}",
923937 fields, base_evs
924- ) ) ?
938+ )
939+ . into ( ) )
925940 }
926941 }
927942 }
@@ -945,7 +960,7 @@ fn lookup_in_peripherals<'p>(
945960 peripheral,
946961 )
947962 } else {
948- Err ( format ! ( "No peripheral {}" , base_peripheral) ) ?
963+ Err ( format ! ( "No peripheral {}" , base_peripheral) . into ( ) )
949964 }
950965}
951966
0 commit comments