Skip to content

Commit af997ec

Browse files
committed
skip derived
1 parent bab1abb commit af997ec

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

svd-parser/src/expand.rs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -404,25 +404,32 @@ pub fn expand(indevice: &Device) -> Result<Device> {
404404
pub fn expand_properties(device: &mut Device) {
405405
let default = device.default_register_properties.clone();
406406
for p in &mut device.peripherals {
407+
if p.derived_from.is_some() {
408+
continue;
409+
}
407410
let default = p.default_register_properties.derive_from(&default);
408411
if let Some(regs) = p.registers.as_mut() {
409-
for rc in regs {
410-
expand_properties_register_cluster(rc, &default);
411-
}
412+
expand_properties_registers(regs, &default);
412413
}
413414
}
414415
}
415416

416-
fn expand_properties_register_cluster(rc: &mut RegisterCluster, default: &RegisterProperties) {
417-
match rc {
418-
RegisterCluster::Cluster(c) => {
419-
let default = c.default_register_properties.derive_from(&default);
420-
for rc in &mut c.children {
421-
expand_properties_register_cluster(rc, &default);
417+
fn expand_properties_registers(regs: &mut [RegisterCluster], default: &RegisterProperties) {
418+
for rc in regs {
419+
match rc {
420+
RegisterCluster::Cluster(c) => {
421+
if c.derived_from.is_some() {
422+
continue;
423+
}
424+
let default = c.default_register_properties.derive_from(&default);
425+
expand_properties_registers(&mut c.children, &default);
426+
}
427+
RegisterCluster::Register(r) => {
428+
if r.derived_from.is_some() {
429+
continue;
430+
}
431+
r.properties = r.properties.derive_from(default);
422432
}
423-
}
424-
RegisterCluster::Register(r) => {
425-
r.properties = r.properties.derive_from(default);
426433
}
427434
}
428435
}

svd-parser/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,13 @@ pub fn parse_with_config(xml: &str, config: &Config) -> anyhow::Result<Device> {
169169
}?;
170170

171171
#[cfg(feature = "expand")]
172-
if config.expand {
173-
device = expand::expand(&device)?;
172+
if config.expand_properties {
173+
expand::expand_properties(&mut device);
174174
}
175175

176176
#[cfg(feature = "expand")]
177-
if config.expand_properties {
178-
expand::expand_properties(&mut device);
177+
if config.expand {
178+
device = expand::expand(&device)?;
179179
}
180180
Ok(device)
181181
}

0 commit comments

Comments
 (0)