@@ -10,8 +10,8 @@ use super::iterators::{MatchIter, Matched};
1010use super :: register:: { RegisterExt , RegisterInfoExt } ;
1111use super :: yaml_ext:: { AsType , GetVal , ToYaml } ;
1212use super :: {
13- check_offsets, make_dim_element, matchname, matchsubspec, modify_dim_element , spec_ind ,
14- PatchResult , VAL_LVL ,
13+ check_offsets, common_description , make_dim_element, matchname, matchsubspec,
14+ modify_dim_element , spec_ind , PatchResult , VAL_LVL ,
1515} ;
1616use super :: { make_cluster, make_interrupt, make_register} ;
1717
@@ -1207,21 +1207,43 @@ fn collect_in_array(
12071207 path
12081208 ) ) ;
12091209 }
1210- let mut rinfo = registers . swap_remove ( 0 ) ;
1211- rinfo . name = if let Some ( name) = rmod. get_str ( "name" ) ? {
1210+
1211+ registers [ 0 ] . name = if let Some ( name) = rmod. get_str ( "name" ) ? {
12121212 name. into ( )
12131213 } else {
12141214 format ! ( "{}%s{}" , & rspec[ ..li] , & rspec[ rspec. len( ) - ri..] )
12151215 } ;
1216+
12161217 if let Some ( desc) = rmod. get_str ( "description" ) ? {
12171218 if desc != "_original" {
1218- rinfo . description = Some ( desc. into ( ) ) ;
1219+ registers [ 0 ] . description = Some ( desc. into ( ) ) ;
12191220 }
1220- } else if dim_index[ 0 ] == "0" {
1221- if let Some ( desc) = rinfo. description . as_mut ( ) {
1222- * desc = desc. replace ( '0' , "%s" ) ;
1221+ } else {
1222+ let descs: Vec < _ > = registers. iter ( ) . map ( |r| r. description . as_deref ( ) ) . collect ( ) ;
1223+ registers[ 0 ] . description = common_description ( & descs, & dim_index) . ok_or_else ( || {
1224+ anyhow ! (
1225+ "{}: registers cannot be collected into {rspec} array. Please, specify description" ,
1226+ path
1227+ )
1228+ } ) ?;
1229+ }
1230+ if let Some ( dname) = rmod. get_str ( "displayName" ) ? {
1231+ if dname != "_original" {
1232+ registers[ 0 ] . display_name = Some ( dname. into ( ) ) ;
12231233 }
1234+ } else {
1235+ let names: Vec < _ > = registers
1236+ . iter ( )
1237+ . map ( |r| r. display_name . as_deref ( ) )
1238+ . collect ( ) ;
1239+ registers[ 0 ] . display_name = common_description ( & names, & dim_index) . ok_or_else ( || {
1240+ anyhow ! (
1241+ "{}: registers cannot be collected into {rspec} array. Please, specify displayName" ,
1242+ path
1243+ )
1244+ } ) ?;
12241245 }
1246+ let rinfo = registers. swap_remove ( 0 ) ;
12251247 let mut reg = rinfo. array (
12261248 DimElement :: builder ( )
12271249 . dim ( dim as u32 )
0 commit comments