File tree Expand file tree Collapse file tree 1 file changed +8
-23
lines changed
Expand file tree Collapse file tree 1 file changed +8
-23
lines changed Original file line number Diff line number Diff line change @@ -564,32 +564,17 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
564564 size : register_size,
565565 } ) ,
566566 Register :: Array ( ref info, ref array_info) => {
567- let sequential_adresses = register_size == array_info. dim_increment * BITS_PER_BYTE ;
568-
569- let numeral_indexes = array_info
570- . dim_index
571- . clone ( )
572- . ok_or_else ( || {
573- format ! ( "Register {} has no `dim_index` field" , register. name)
574- } ) ?
575- . iter ( )
576- . all ( |element| element. parse :: < usize > ( ) . is_ok ( ) ) ;
567+ let sequential_addresses = register_size == array_info. dim_increment * BITS_PER_BYTE ;
577568
578- let sequential_indexes = if numeral_indexes && sequential_adresses {
579- array_info
580- . dim_index
581- . clone ( )
582- . unwrap ( )
569+ // if dimIndex exists, test if it is a sequence of numbers from 0 to dim
570+ let sequential_indexes = array_info. dim_index . as_ref ( ) . map_or ( true , |dim_index| {
571+ dim_index
583572 . iter ( )
584- . map ( |element| element. parse :: < u32 > ( ) . unwrap ( ) )
585- . collect :: < Vec < u32 > > ( )
586- . eq ( & ( 0 ..array_info. dim ) . collect :: < Vec < u32 > > ( ) )
587- } else {
588- false
589- } ;
573+ . map ( |element| element. parse :: < u32 > ( ) )
574+ . eq ( ( 0 ..array_info. dim ) . map ( Ok ) )
575+ } ) ;
590576
591- let array_convertible =
592- sequential_indexes && numeral_indexes && sequential_adresses;
577+ let array_convertible = sequential_indexes && sequential_addresses;
593578
594579 if array_convertible {
595580 registers_expanded. push ( RegisterBlockField {
You can’t perform that action at this time.
0 commit comments