Skip to content

Commit e4b5e71

Browse files
committed
derivedFrom is an attribute, not a child of <register>
This got accidentally refactored to be parsed as a child, but this is actually an attribute (consistent with peripheral.rs). Fixup and test via `cargo test --features unproven`
1 parent 9d87a7b commit e4b5e71

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

src/svd/registerinfo.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ impl RegisterInfo {
5959
name,
6060
alternate_group: tree.get_child_text_opt("alternateGroup")?,
6161
alternate_register: tree.get_child_text_opt("alternateRegister")?,
62-
derived_from: tree.get_child_text_opt("derivedFrom")?,
62+
derived_from: tree.attributes.get("derivedFrom").map(|s| s.to_owned()),
6363
description: tree.get_child_text("description")?,
6464
address_offset: tree.get_child_u32("addressOffset")?,
6565
size: parse::optional::<u32>("size", tree)?,
@@ -136,10 +136,8 @@ impl Encode for RegisterInfo {
136136

137137
match self.derived_from {
138138
Some(ref v) => {
139-
elem.children.push(new_element(
140-
"derivedFrom",
141-
Some(format!("{}", v)),
142-
));
139+
elem.attributes
140+
.insert(String::from("derivedFrom"), format!("{}", v));
143141
}
144142
None => (),
145143
}
@@ -254,13 +252,12 @@ mod tests {
254252
_extensible: (),
255253
},
256254
"
257-
<register>
255+
<register derivedFrom=\"derived from\">
258256
<name>WRITECTRL</name>
259257
<description>Write Control Register</description>
260258
<addressOffset>0x8</addressOffset>
261259
<alternateGroup>alternate group</alternateGroup>
262260
<alternateRegister>alternate register</alternateRegister>
263-
<derivedFrom>derived from</derivedFrom>
264261
<size>32</size>
265262
<access>read-write</access>
266263
<resetValue>0x00000000</resetValue>

0 commit comments

Comments
 (0)