Skip to content

Commit fc88682

Browse files
committed
feat: not cast if unnecessary
adjust code according to clippy
1 parent 126603c commit fc88682

File tree

6 files changed

+26
-34
lines changed

6 files changed

+26
-34
lines changed

CHANGELOG.md

+2
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+
- Don't cast fields with width 17-31 and non-zero offset.
11+
1012
## [v0.27.0] - 2022-10-24
1113

1214
- Manually inline set/clear_bit

build.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ fn commit_info() -> String {
3535
fn commit_hash() -> Result<String, IgnoredError> {
3636
Ok(String::from_utf8(
3737
Command::new("git")
38-
.args(&["rev-parse", "--short", "HEAD"])
38+
.args(["rev-parse", "--short", "HEAD"])
3939
.output()?
4040
.stdout,
4141
)?)
@@ -44,7 +44,7 @@ fn commit_hash() -> Result<String, IgnoredError> {
4444
fn commit_date() -> Result<String, IgnoredError> {
4545
Ok(String::from_utf8(
4646
Command::new("git")
47-
.args(&["log", "-1", "--date=short", "--pretty=format:%cd"])
47+
.args(["log", "-1", "--date=short", "--pretty=format:%cd"])
4848
.output()?
4949
.stdout,
5050
)?)

src/generate/interrupt.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub fn render(
3333
.map(|i| (i.0.value, (i.0, i.1, i.2)))
3434
.collect::<HashMap<_, _>>();
3535

36-
let mut interrupts = interrupts.into_iter().map(|(_, v)| v).collect::<Vec<_>>();
36+
let mut interrupts = interrupts.into_values().collect::<Vec<_>>();
3737
interrupts.sort_by_key(|i| i.0.value);
3838

3939
let mut root = TokenStream::new();

src/generate/peripheral.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub fn render(p_original: &Peripheral, index: &Index, config: &Config) -> Result
3030
let span = Span::call_site();
3131
let name_str = name.to_sanitized_constant_case();
3232
let name_constant_case = Ident::new(&name_str, span);
33-
let address = util::hex(p.base_address as u64);
33+
let address = util::hex(p.base_address);
3434
let description = util::respace(p.description.as_ref().unwrap_or(&p.name));
3535

3636
let name_snake_case = name.to_snake_case_ident(span);

src/generate/register.rs

+19-29
Original file line numberDiff line numberDiff line change
@@ -483,21 +483,16 @@ pub fn fields(
483483
};
484484
let value = if offset != 0 {
485485
let offset = &util::unsuffixed(offset);
486-
quote! {
487-
((self.bits >> #offset) & #hexmask) #cast
488-
}
489-
} else if use_cast {
490-
quote! {
491-
(self.bits & #hexmask) #cast
492-
}
486+
quote! { (self.bits >> #offset) }
487+
} else {
488+
quote! { self.bits }
489+
};
490+
let value = if use_mask && use_cast {
491+
quote! { (#value & #hexmask) #cast }
493492
} else if use_mask {
494-
quote! {
495-
self.bits & #hexmask
496-
}
493+
quote! { #value & #hexmask }
497494
} else {
498-
quote! {
499-
self.bits
500-
}
495+
value
501496
};
502497

503498
// get a brief description for this field
@@ -719,21 +714,16 @@ pub fn fields(
719714
let sub_offset = offset + (i as u64) * (increment as u64);
720715
let value = if sub_offset != 0 {
721716
let sub_offset = &util::unsuffixed(sub_offset);
722-
quote! {
723-
((self.bits >> #sub_offset) & #hexmask) #cast
724-
}
725-
} else if use_cast {
726-
quote! {
727-
(self.bits & #hexmask) #cast
728-
}
717+
quote! { (self.bits >> #sub_offset) }
718+
} else {
719+
quote! { self.bits }
720+
};
721+
let value = if use_mask && use_cast {
722+
quote! { (#value & #hexmask) #cast }
729723
} else if use_mask {
730-
quote! {
731-
self.bits & #hexmask
732-
}
724+
quote! { #value & #hexmask }
733725
} else {
734-
quote! {
735-
self.bits
736-
}
726+
value
737727
};
738728
let name_snake_case_n = util::replace_suffix(&f.name, &suffix)
739729
.to_snake_case_ident(Span::call_site());
@@ -963,7 +953,7 @@ pub fn fields(
963953
&description_with_bits(description_raw, sub_offset, width),
964954
&suffix,
965955
);
966-
let sub_offset = util::unsuffixed(sub_offset as u64);
956+
let sub_offset = util::unsuffixed(sub_offset);
967957

968958
w_impl_items.extend(quote! {
969959
#[doc = #doc]
@@ -976,7 +966,7 @@ pub fn fields(
976966
}
977967
} else {
978968
let doc = description_with_bits(description_raw, offset, width);
979-
let offset = util::unsuffixed(offset as u64);
969+
let offset = util::unsuffixed(offset);
980970
w_impl_items.extend(quote! {
981971
#[doc = #doc]
982972
#inline
@@ -1037,7 +1027,7 @@ impl Variant {
10371027
.iter()
10381028
// filter out all reserved variants, as we should not
10391029
// generate code for them
1040-
.filter(|field| field.name.to_lowercase() != "reserved" && field.is_default == None)
1030+
.filter(|field| field.name.to_lowercase() != "reserved" && field.is_default.is_none())
10411031
.map(|ev| {
10421032
let value = ev
10431033
.value

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ pub fn generate(input: &str, config: &Config) -> Result<Generation> {
546546
let device = load_from(input, config)?;
547547
let mut device_x = String::new();
548548
let items =
549-
generate::device::render(&device, config, &mut device_x).or(Err(SvdError::Render))?;
549+
generate::device::render(&device, config, &mut device_x).map_err(|_| SvdError::Render)?;
550550

551551
let mut lib_rs = String::new();
552552
writeln!(

0 commit comments

Comments
 (0)