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> {
564
564
size : register_size,
565
565
} ) ,
566
566
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 ;
577
568
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
583
572
. 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
+ } ) ;
590
576
591
- let array_convertible =
592
- sequential_indexes && numeral_indexes && sequential_adresses;
577
+ let array_convertible = sequential_indexes && sequential_addresses;
593
578
594
579
if array_convertible {
595
580
registers_expanded. push ( RegisterBlockField {
You can’t perform that action at this time.
0 commit comments