Skip to content

Commit 5700351

Browse files
committed
derivedFrom FieldReaders should always be a type alias for the base FieldReader
Fixes #474
1 parent 1a2bf65 commit 5700351

File tree

1 file changed

+7
-22
lines changed

1 file changed

+7
-22
lines changed

src/generate/register.rs

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -430,30 +430,15 @@ pub fn fields(
430430
evs_r = Some(evs.clone());
431431

432432
if let Some(base) = base {
433-
let pc = util::replace_suffix(base.field, "");
434-
let pc = pc.to_sanitized_upper_case();
435-
let base_pc_r = Ident::new(&(pc + "_A"), span);
436-
derive_from_base(mod_items, &base, &name_pc_a, &base_pc_r, &description);
433+
let pc_orig = util::replace_suffix(base.field, "");
437434

438-
mod_items.extend(quote! {
439-
#[doc = #readerdoc]
440-
pub struct #name_pc_r(crate::FieldReader<#fty, #name_pc_a>);
441-
442-
impl #name_pc_r {
443-
pub(crate) fn new(bits: #fty) -> Self {
444-
#name_pc_r(crate::FieldReader::new(bits))
445-
}
446-
}
435+
let pc = pc_orig.to_sanitized_upper_case();
436+
let base_pc_a = Ident::new(&(pc + "_A"), span);
437+
derive_from_base(mod_items, &base, &name_pc_a, &base_pc_a, &description);
447438

448-
impl core::ops::Deref for #name_pc_r {
449-
type Target = crate::FieldReader<#fty, #name_pc_a>;
450-
451-
#[inline(always)]
452-
fn deref(&self) -> &Self::Target {
453-
&self.0
454-
}
455-
}
456-
});
439+
let pc = pc_orig.to_sanitized_upper_case();
440+
let base_pc_r = Ident::new(&(pc + "_R"), span);
441+
derive_from_base(mod_items, &base, &name_pc_r, &base_pc_r, &readerdoc);
457442
} else {
458443
let has_reserved_variant = evs.values.len() != (1 << width);
459444
let variants = Variant::from_enumerated_values(evs)?;

0 commit comments

Comments
 (0)