@@ -8,7 +8,8 @@ pub mod pendings;
88pub mod priorities;
99pub mod threshold;
1010
11- pub use riscv_pac:: { HartIdNumber , InterruptNumber , PriorityNumber } ; // re-export useful riscv-pac traits
11+ // re-export useful riscv-pac traits
12+ pub use riscv_pac:: { HartIdNumber , InterruptNumber , PriorityNumber } ;
1213
1314/// Trait for a PLIC peripheral.
1415///
@@ -145,6 +146,7 @@ impl<P: Plic> CTX<P> {
145146#[ cfg( test) ]
146147pub ( crate ) mod test {
147148 use super :: { HartIdNumber , InterruptNumber , PriorityNumber } ;
149+ use riscv_pac:: result:: { Error , Result } ;
148150
149151 #[ derive( Clone , Copy , Debug , Eq , PartialEq ) ]
150152 #[ repr( u16 ) ]
@@ -181,9 +183,12 @@ pub(crate) mod test {
181183 }
182184
183185 #[ inline]
184- fn from_number ( number : u16 ) -> Result < Self , u16 > {
186+ fn from_number ( number : u16 ) -> Result < Self > {
185187 if number > Self :: MAX_INTERRUPT_NUMBER || number == 0 {
186- Err ( number)
188+ Err ( Error :: InvalidVariant {
189+ field : "interrupt" ,
190+ value : number as usize ,
191+ } )
187192 } else {
188193 // SAFETY: valid interrupt number
189194 Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -200,9 +205,12 @@ pub(crate) mod test {
200205 }
201206
202207 #[ inline]
203- fn from_number ( number : u8 ) -> Result < Self , u8 > {
208+ fn from_number ( number : u8 ) -> Result < Self > {
204209 if number > Self :: MAX_PRIORITY_NUMBER {
205- Err ( number)
210+ Err ( Error :: InvalidVariant {
211+ field : "priority" ,
212+ value : number as usize ,
213+ } )
206214 } else {
207215 // SAFETY: valid priority number
208216 Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -219,9 +227,12 @@ pub(crate) mod test {
219227 }
220228
221229 #[ inline]
222- fn from_number ( number : u16 ) -> Result < Self , u16 > {
230+ fn from_number ( number : u16 ) -> Result < Self > {
223231 if number > Self :: MAX_HART_ID_NUMBER {
224- Err ( number)
232+ Err ( Error :: InvalidVariant {
233+ field : "context" ,
234+ value : number as usize ,
235+ } )
225236 } else {
226237 // SAFETY: valid context number
227238 Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -241,8 +252,20 @@ pub(crate) mod test {
241252 assert_eq ! ( Interrupt :: from_number( 3 ) , Ok ( Interrupt :: I3 ) ) ;
242253 assert_eq ! ( Interrupt :: from_number( 4 ) , Ok ( Interrupt :: I4 ) ) ;
243254
244- assert_eq ! ( Interrupt :: from_number( 0 ) , Err ( 0 ) ) ;
245- assert_eq ! ( Interrupt :: from_number( 5 ) , Err ( 5 ) ) ;
255+ assert_eq ! (
256+ Interrupt :: from_number( 0 ) ,
257+ Err ( Error :: InvalidVariant {
258+ field: "interrupt" ,
259+ value: 0
260+ } )
261+ ) ;
262+ assert_eq ! (
263+ Interrupt :: from_number( 5 ) ,
264+ Err ( Error :: InvalidVariant {
265+ field: "interrupt" ,
266+ value: 5
267+ } )
268+ ) ;
246269 }
247270
248271 #[ test]
@@ -257,7 +280,13 @@ pub(crate) mod test {
257280 assert_eq ! ( Priority :: from_number( 2 ) , Ok ( Priority :: P2 ) ) ;
258281 assert_eq ! ( Priority :: from_number( 3 ) , Ok ( Priority :: P3 ) ) ;
259282
260- assert_eq ! ( Priority :: from_number( 4 ) , Err ( 4 ) ) ;
283+ assert_eq ! (
284+ Priority :: from_number( 4 ) ,
285+ Err ( Error :: InvalidVariant {
286+ field: "priority" ,
287+ value: 4
288+ } )
289+ ) ;
261290 }
262291
263292 #[ test]
@@ -270,7 +299,13 @@ pub(crate) mod test {
270299 assert_eq ! ( Context :: from_number( 1 ) , Ok ( Context :: C1 ) ) ;
271300 assert_eq ! ( Context :: from_number( 2 ) , Ok ( Context :: C2 ) ) ;
272301
273- assert_eq ! ( Context :: from_number( 3 ) , Err ( 3 ) ) ;
302+ assert_eq ! (
303+ Context :: from_number( 3 ) ,
304+ Err ( Error :: InvalidVariant {
305+ field: "context" ,
306+ value: 3
307+ } )
308+ ) ;
274309 }
275310
276311 #[ allow( dead_code) ]
0 commit comments