Skip to content

Commit edc7125

Browse files
committed
don't add enums in derived fields
1 parent 59e01eb commit edc7125

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

CHANGELOG-rust.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ This changelog tracks the Rust `svdtools` project. See
55

66
## [Unreleased]
77

8+
* Skip adding `enumeratedValues` & `writeConstraint` to derived fields
9+
810
## [v0.4.6] 2025-04-03
911

1012
* Fixed compilation with new `rust`

src/patch/register.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -888,13 +888,17 @@ impl RegisterExt for Register {
888888
set_enum(ftag, evs.clone(), orig_usage, true, access)?;
889889
}
890890
} else {
891-
let (fspec, ignore) = fspec.spec();
891+
let (fspec, mut ignore) = fspec.spec();
892892
let mut offsets: Vec<_> = Vec::new();
893893
let mut width_vals = HashSet::new();
894894
for (i, f) in self.fields().enumerate() {
895895
if matchname(&f.name, fspec) {
896-
offsets.push((f.bit_offset(), f.name.to_string(), i));
897-
width_vals.insert(f.bit_width());
896+
if f.derived_from.is_none() {
897+
offsets.push((f.bit_offset(), f.name.to_string(), i));
898+
width_vals.insert(f.bit_width());
899+
} else {
900+
ignore = true;
901+
}
898902
}
899903
}
900904
if offsets.is_empty() {
@@ -964,10 +968,12 @@ impl RegisterExt for Register {
964968
let mut set_any = false;
965969
let (fspec, ignore) = fspec.spec();
966970
for ftag in self.iter_fields(fspec) {
967-
ftag.write_constraint = Some(WriteConstraint::Range(WriteConstraintRange {
968-
min: fmod[0].i64()? as u64,
969-
max: fmod[1].i64()? as u64,
970-
}));
971+
if ftag.derived_from.is_none() {
972+
ftag.write_constraint = Some(WriteConstraint::Range(WriteConstraintRange {
973+
min: fmod[0].i64()? as u64,
974+
max: fmod[1].i64()? as u64,
975+
}));
976+
}
971977
set_any = true;
972978
}
973979
if !ignore && !set_any {

0 commit comments

Comments
 (0)