@@ -198,7 +198,7 @@ pub(crate) trait RegisterBlockExt: Name {
198
198
199
199
/// Remove fields from rname and mark it as derivedFrom rderive.
200
200
/// Update all derivedFrom referencing rname
201
- fn derive_register ( & mut self , rname : & str , rderive : & Yaml ) -> PatchResult {
201
+ fn derive_register ( & mut self , rname : & str , rderive : & Yaml , bpath : & BlockPath ) -> PatchResult {
202
202
let ( rderive, info) = if let Some ( rderive) = rderive. as_str ( ) {
203
203
(
204
204
rderive,
@@ -217,10 +217,8 @@ pub(crate) trait RegisterBlockExt: Name {
217
217
} ;
218
218
219
219
self . get_reg ( rderive) . ok_or_else ( || {
220
- anyhow ! (
221
- "register {rderive} not found. Present registers: {}.`" ,
222
- self . present_registers( )
223
- )
220
+ let present = self . present_registers ( ) ;
221
+ anyhow ! ( "Could not find `{bpath}:{rderive}. Present registers: {present}." )
224
222
} ) ?;
225
223
226
224
match self . get_mut_reg ( rname) {
@@ -241,7 +239,7 @@ pub(crate) trait RegisterBlockExt: Name {
241
239
242
240
/// Remove fields from rname and mark it as derivedFrom rderive.
243
241
/// Update all derivedFrom referencing rname
244
- fn derive_cluster ( & mut self , _cname : & str , _cderive : & Yaml ) -> PatchResult {
242
+ fn derive_cluster ( & mut self , _cname : & str , _cderive : & Yaml , _bpath : & BlockPath ) -> PatchResult {
245
243
todo ! ( )
246
244
}
247
245
@@ -255,10 +253,10 @@ pub(crate) trait RegisterBlockExt: Name {
255
253
. regs ( )
256
254
. find ( |r| r. name == srcname)
257
255
. ok_or_else ( || {
256
+ let present = self . present_registers ( ) ;
258
257
anyhow ! (
259
- "{} {bpath} does not have register {srcname}. Present registers: {}.`" ,
258
+ "{} {bpath} does not have register {srcname}. Present registers: {present }.`" ,
260
259
Self :: RB_TYPE ,
261
- self . present_registers( )
262
260
)
263
261
} ) ?
264
262
. clone ( ) ;
@@ -277,7 +275,7 @@ pub(crate) trait RegisterBlockExt: Name {
277
275
}
278
276
279
277
/// Add cname given by deriving from ccopy to ptag
280
- fn copy_cluster ( & mut self , _rname : & str , _ccopy : & Hash ) -> PatchResult {
278
+ fn copy_cluster ( & mut self , _rname : & str , _ccopy : & Hash , _bpath : & BlockPath ) -> PatchResult {
281
279
todo ! ( )
282
280
}
283
281
@@ -326,7 +324,6 @@ pub(crate) trait RegisterBlockExt: Name {
326
324
/// Work through a register, handling all fields
327
325
fn process_register (
328
326
& mut self ,
329
-
330
327
rspec : & str ,
331
328
rmod : & Hash ,
332
329
bpath : & BlockPath ,
@@ -656,7 +653,7 @@ impl PeripheralExt for Peripheral {
656
653
for ( cname, val) in rcopy. hash ( ) ? {
657
654
let cname = cname. str ( ) ?;
658
655
let ccopy = val. hash ( ) ?;
659
- self . copy_cluster ( rname, ccopy)
656
+ self . copy_cluster ( rname, ccopy, & ppath )
660
657
. with_context ( || format ! ( "Copying cluster `{cname}` from `{val:?}`" ) ) ?;
661
658
}
662
659
}
@@ -754,23 +751,24 @@ impl PeripheralExt for Peripheral {
754
751
"_registers" => {
755
752
for ( rname, val) in rderive. hash ( ) ? {
756
753
let rname = rname. str ( ) ?;
757
- self . derive_register ( rname, val) . with_context ( || {
754
+ self . derive_register ( rname, val, & ppath ) . with_context ( || {
758
755
format ! ( "Deriving register `{rname}` from `{val:?}`" )
759
756
} ) ?;
760
757
}
761
758
}
762
759
"_clusters" => {
763
760
for ( cname, val) in rderive. hash ( ) ? {
764
761
let cname = cname. str ( ) ?;
765
- self . derive_cluster ( rname, val) . with_context ( || {
762
+ self . derive_cluster ( rname, val, & ppath ) . with_context ( || {
766
763
format ! ( "Deriving cluster `{cname}` from `{val:?}`" )
767
764
} ) ?;
768
765
}
769
766
}
770
767
_ => {
771
- self . derive_register ( rname, rderive) . with_context ( || {
772
- format ! ( "Deriving register `{rname}` from `{rderive:?}`" )
773
- } ) ?;
768
+ self . derive_register ( rname, rderive, & ppath)
769
+ . with_context ( || {
770
+ format ! ( "Deriving register `{rname}` from `{rderive:?}`" )
771
+ } ) ?;
774
772
}
775
773
}
776
774
}
@@ -911,7 +909,7 @@ impl ClusterExt for Cluster {
911
909
for ( cname, val) in rcopy. hash ( ) ? {
912
910
let cname = cname. str ( ) ?;
913
911
let ccopy = val. hash ( ) ?;
914
- self . copy_cluster ( rname, ccopy)
912
+ self . copy_cluster ( rname, ccopy, & cpath )
915
913
. with_context ( || format ! ( "Copying cluster `{cname}` from `{val:?}`" ) ) ?;
916
914
}
917
915
}
@@ -994,23 +992,24 @@ impl ClusterExt for Cluster {
994
992
"_registers" => {
995
993
for ( rname, val) in rderive. hash ( ) ? {
996
994
let rname = rname. str ( ) ?;
997
- self . derive_register ( rname, val) . with_context ( || {
995
+ self . derive_register ( rname, val, & cpath ) . with_context ( || {
998
996
format ! ( "Deriving register `{rname}` from `{val:?}`" )
999
997
} ) ?;
1000
998
}
1001
999
}
1002
1000
"_clusters" => {
1003
1001
for ( cname, val) in rderive. hash ( ) ? {
1004
1002
let cname = cname. str ( ) ?;
1005
- self . derive_cluster ( rname, val) . with_context ( || {
1003
+ self . derive_cluster ( rname, val, & cpath ) . with_context ( || {
1006
1004
format ! ( "Deriving cluster `{cname}` from `{val:?}`" )
1007
1005
} ) ?;
1008
1006
}
1009
1007
}
1010
1008
_ => {
1011
- self . derive_register ( rname, rderive) . with_context ( || {
1012
- format ! ( "Deriving register `{rname}` from `{rderive:?}`" )
1013
- } ) ?;
1009
+ self . derive_register ( rname, rderive, & cpath)
1010
+ . with_context ( || {
1011
+ format ! ( "Deriving register `{rname}` from `{rderive:?}`" )
1012
+ } ) ?;
1014
1013
}
1015
1014
}
1016
1015
}
0 commit comments