From 76595d0c92ebb4ee9e2a25aeeaa53b787cb51468 Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Sat, 22 Feb 2025 23:52:45 +0900 Subject: [PATCH] change(validator): add AddressOutofRange error --- src/validator.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/validator.rs b/src/validator.rs index 479bcb5..a075b2b 100644 --- a/src/validator.rs +++ b/src/validator.rs @@ -24,6 +24,8 @@ pub enum ValidationError { existing_name: String, new_name: String, }, + #[error("address 0x{address:08x} is out of range: \"{name}\"")] + AddressOutofRange { address: u32, name: String }, #[error("unsupported structure: {msg}")] UnsupportedStructure { msg: &'static str }, } @@ -105,9 +107,16 @@ impl Validate for Register { }; for id in 0..len { let addr = addr + id * offset; - let regmap: &mut Option<_> = mapping - .get_mut::(addr.try_into().unwrap()) - .expect("index of mapping out of range"); + let regmap: &mut Option<_> = match mapping.get_mut::(addr.try_into().unwrap()) { + Some(regmap) => regmap, + None => { + errors.push(ValidationError::AddressOutofRange { + address: addr, + name: self.name.clone(), + }); + continue; + } + }; if let Some(old) = regmap { let existing_name = { let mut path = old.0.clone();