Skip to content

Commit 129cb42

Browse files
authored
Merge pull request #286 from rust-embedded/derive-revert
Partially revert #283
2 parents 4075e69 + bb0bd88 commit 129cb42

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

svd-rs/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
- Partially revert #283
11+
1012
## [v0.14.10] - 2025-02-08
1113

1214
- Do not derive `DimElement`

svd-rs/src/derive_from.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,25 @@ impl DeriveFrom for FieldInfo {
109109

110110
impl<T> DeriveFrom for MaybeArray<T>
111111
where
112-
T: DeriveFrom,
112+
T: DeriveFrom + crate::Name,
113113
{
114114
fn derive_from(&self, other: &Self) -> Self {
115-
use std::ops::Deref;
116-
let info = self.deref().derive_from(other.deref());
117-
match self {
118-
Self::Single(_) => Self::Single(info),
119-
Self::Array(_, dim) => Self::Array(info, dim.clone()),
115+
match (self, other) {
116+
(Self::Single(info), Self::Single(other_info)) => {
117+
Self::Single(info.derive_from(other_info))
118+
}
119+
(Self::Single(info), Self::Array(other_info, other_dim)) => {
120+
if info.name().contains("%s") {
121+
let mut dim = other_dim.clone();
122+
dim.dim_name = None;
123+
Self::Array(info.derive_from(other_info), dim)
124+
} else {
125+
Self::Single(info.derive_from(other_info))
126+
}
127+
}
128+
(Self::Array(info, dim), Self::Single(other_info) | Self::Array(other_info, _)) => {
129+
Self::Array(info.derive_from(other_info), dim.clone())
130+
}
120131
}
121132
}
122133
}

0 commit comments

Comments
 (0)