fix(converter): use mask of parent register for virtual field if exists

This commit is contained in:
Wataru Otsubo 2025-04-24 03:11:08 +09:00
parent 6ee8239682
commit 3379babe12

View file

@ -517,7 +517,11 @@ impl Field {
/// Generate Field from Registers (piracy), guessing a lot of parameters.
pub(crate) fn from_xml_register_dom(node: Node) -> Result<Self, DomConversionError> {
let name = util::get_name(node)?;
let mask = node
let mask = match node.attribute("mask") {
Some(mask) => mask
.parse_prefixed_u32()
.map_err(|e| DomConversionError::parse_prefixed_u32_error(e, "mask", node))?,
None => node
.ancestors()
.filter_map(|node| util::get_type(node))
.next()
@ -527,7 +531,8 @@ impl Field {
|dtype| match dtype {
crate::types::DataType::D32 => Ok(u32::MAX),
},
)?;
)?,
};
if node.has_attribute("default") {
return Err(DomConversionError::other_error(
"unsupported structure: register with @default without field",