@@ -8,7 +8,8 @@ pub mod pendings;
8
8
pub mod priorities;
9
9
pub mod threshold;
10
10
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 } ;
12
13
13
14
/// Trait for a PLIC peripheral.
14
15
///
@@ -145,6 +146,7 @@ impl<P: Plic> CTX<P> {
145
146
#[ cfg( test) ]
146
147
pub ( crate ) mod test {
147
148
use super :: { HartIdNumber , InterruptNumber , PriorityNumber } ;
149
+ use riscv_pac:: result:: { Error , Result } ;
148
150
149
151
#[ derive( Clone , Copy , Debug , Eq , PartialEq ) ]
150
152
#[ repr( u16 ) ]
@@ -181,9 +183,12 @@ pub(crate) mod test {
181
183
}
182
184
183
185
#[ inline]
184
- fn from_number ( number : u16 ) -> Result < Self , u16 > {
186
+ fn from_number ( number : u16 ) -> Result < Self > {
185
187
if number > Self :: MAX_INTERRUPT_NUMBER || number == 0 {
186
- Err ( number)
188
+ Err ( Error :: InvalidVariant {
189
+ field : "interrupt" ,
190
+ value : number as usize ,
191
+ } )
187
192
} else {
188
193
// SAFETY: valid interrupt number
189
194
Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -200,9 +205,12 @@ pub(crate) mod test {
200
205
}
201
206
202
207
#[ inline]
203
- fn from_number ( number : u8 ) -> Result < Self , u8 > {
208
+ fn from_number ( number : u8 ) -> Result < Self > {
204
209
if number > Self :: MAX_PRIORITY_NUMBER {
205
- Err ( number)
210
+ Err ( Error :: InvalidVariant {
211
+ field : "priority" ,
212
+ value : number as usize ,
213
+ } )
206
214
} else {
207
215
// SAFETY: valid priority number
208
216
Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -219,9 +227,12 @@ pub(crate) mod test {
219
227
}
220
228
221
229
#[ inline]
222
- fn from_number ( number : u16 ) -> Result < Self , u16 > {
230
+ fn from_number ( number : u16 ) -> Result < Self > {
223
231
if number > Self :: MAX_HART_ID_NUMBER {
224
- Err ( number)
232
+ Err ( Error :: InvalidVariant {
233
+ field : "context" ,
234
+ value : number as usize ,
235
+ } )
225
236
} else {
226
237
// SAFETY: valid context number
227
238
Ok ( unsafe { core:: mem:: transmute ( number) } )
@@ -241,8 +252,20 @@ pub(crate) mod test {
241
252
assert_eq ! ( Interrupt :: from_number( 3 ) , Ok ( Interrupt :: I3 ) ) ;
242
253
assert_eq ! ( Interrupt :: from_number( 4 ) , Ok ( Interrupt :: I4 ) ) ;
243
254
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
+ ) ;
246
269
}
247
270
248
271
#[ test]
@@ -257,7 +280,13 @@ pub(crate) mod test {
257
280
assert_eq ! ( Priority :: from_number( 2 ) , Ok ( Priority :: P2 ) ) ;
258
281
assert_eq ! ( Priority :: from_number( 3 ) , Ok ( Priority :: P3 ) ) ;
259
282
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
+ ) ;
261
290
}
262
291
263
292
#[ test]
@@ -270,7 +299,13 @@ pub(crate) mod test {
270
299
assert_eq ! ( Context :: from_number( 1 ) , Ok ( Context :: C1 ) ) ;
271
300
assert_eq ! ( Context :: from_number( 2 ) , Ok ( Context :: C2 ) ) ;
272
301
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
+ ) ;
274
309
}
275
310
276
311
#[ allow( dead_code) ]
0 commit comments