Skip to content

Commit f2d90b9

Browse files
committed
rebase, clean-up import, add negative cases for signed integers
1 parent 6cb74e9 commit f2d90b9

5 files changed

Lines changed: 28 additions & 20 deletions

File tree

clippy_lints/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ rustc_lint::late_lint_methods!(
736736
NeedlessLateInit: needless_late_init::NeedlessLateInit = needless_late_init::NeedlessLateInit,
737737
ReturnSelfNotMustUse: return_self_not_must_use::ReturnSelfNotMustUse = return_self_not_must_use::ReturnSelfNotMustUse,
738738
NumberedFields: init_numbered_fields::NumberedFields = init_numbered_fields::NumberedFields,
739-
ManualBitWidth: manual_bit_width::ManualBits = manual_bit_width::ManualBitWidth::new(conf),
739+
ManualBitWidth: manual_bit_width::ManualBitWidth = manual_bit_width::ManualBitWidth::new(conf),
740740
ManualBits: manual_bits::ManualBits = manual_bits::ManualBits::new(conf),
741741
DefaultUnionRepresentation: default_union_representation::DefaultUnionRepresentation = default_union_representation::DefaultUnionRepresentation,
742742
OnlyUsedInRecursion: only_used_in_recursion::OnlyUsedInRecursion = <only_used_in_recursion::OnlyUsedInRecursion>::default(),

clippy_lints/src/manual_bit_width.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ impl LateLintPass<'_> for ManualBitWidth {
5454
match expr.kind {
5555
// `T::BITS - n.leading_zeros()`
5656
ExprKind::Binary(op, left, right)
57-
if left.span.eq_ctxt(right.span)
58-
&& op.node == BinOpKind::Sub
57+
if op.node == BinOpKind::Sub
5958
&& let ExprKind::MethodCall(leading_zeros, recv, [], _) = right.kind
6059
&& leading_zeros.ident.name == sym::leading_zeros
6160
&& let ExprKind::Path(QPath::TypeRelative(hir_ty, segment)) = left.kind
@@ -74,6 +73,7 @@ impl LateLintPass<'_> for ManualBitWidth {
7473
_ => return,
7574
}
7675
&& self.msrv.meets(cx, msrvs::BIT_WIDTH)
76+
&& left.span.eq_ctxt(right.span)
7777
&& !is_from_proc_macro(cx, expr) =>
7878
{
7979
emit(cx, recv, expr);
@@ -90,7 +90,7 @@ fn emit(cx: &LateContext<'_>, recv: &Expr<'_>, full_expr: &Expr<'_>) {
9090
cx,
9191
MANUAL_BIT_WIDTH,
9292
full_expr.span,
93-
"manually reimplementing `bit_width`",
93+
"manual implementation of `bit_width`",
9494
"try",
9595
format!("{recv_snip}.bit_width()"),
9696
app,

tests/ui/manual_bit_width.fixed

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
#![warn(clippy::manual_bit_width)]
22

3-
use core::num::NonZero;
4-
use std::num;
5-
63
fn main() {
74
let x: u32 = 5;
85

@@ -13,5 +10,12 @@ fn main() {
1310
let _ = x.bit_width(); //~ manual_bit_width
1411
let _ = x.bit_width(); //~ manual_bit_width
1512

13+
// negative cases.
1614
let _ = 128 - x.leading_zeros();
15+
16+
// signed integers do not implement `bit_width()`
17+
let _ = i8::BITS - x.leading_zeros();
18+
let _ = i16::BITS - x.leading_zeros();
19+
let _ = i32::BITS - x.leading_zeros();
20+
let _ = i64::BITS - x.leading_zeros();
1721
}

tests/ui/manual_bit_width.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
#![warn(clippy::manual_bit_width)]
22

3-
use core::num::NonZero;
4-
use std::num;
5-
63
fn main() {
74
let x: u32 = 5;
85

@@ -13,5 +10,12 @@ fn main() {
1310
let _ = u64::BITS - x.leading_zeros(); //~ manual_bit_width
1411
let _ = usize::BITS - x.leading_zeros(); //~ manual_bit_width
1512

13+
// negative cases.
1614
let _ = 128 - x.leading_zeros();
15+
16+
// signed integers do not implement `bit_width()`
17+
let _ = i8::BITS - x.leading_zeros();
18+
let _ = i16::BITS - x.leading_zeros();
19+
let _ = i32::BITS - x.leading_zeros();
20+
let _ = i64::BITS - x.leading_zeros();
1721
}

tests/ui/manual_bit_width.stderr

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
1-
error: manually reimplementing `bit_width`
2-
--> tests/ui/manual_bit_width.rs:10:13
1+
error: manual implementation of `bit_width`
2+
--> tests/ui/manual_bit_width.rs:7:13
33
|
44
LL | let _ = u8::BITS - x.leading_zeros();
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.bit_width()`
66
|
77
= note: `-D clippy::manual-bit-width` implied by `-D warnings`
88
= help: to override `-D warnings` add `#[allow(clippy::manual_bit_width)]`
99

10-
error: manually reimplementing `bit_width`
11-
--> tests/ui/manual_bit_width.rs:11:13
10+
error: manual implementation of `bit_width`
11+
--> tests/ui/manual_bit_width.rs:8:13
1212
|
1313
LL | let _ = u16::BITS - x.leading_zeros();
1414
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.bit_width()`
1515

16-
error: manually reimplementing `bit_width`
17-
--> tests/ui/manual_bit_width.rs:12:13
16+
error: manual implementation of `bit_width`
17+
--> tests/ui/manual_bit_width.rs:9:13
1818
|
1919
LL | let _ = u32::BITS - x.leading_zeros();
2020
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.bit_width()`
2121

22-
error: manually reimplementing `bit_width`
23-
--> tests/ui/manual_bit_width.rs:13:13
22+
error: manual implementation of `bit_width`
23+
--> tests/ui/manual_bit_width.rs:10:13
2424
|
2525
LL | let _ = u64::BITS - x.leading_zeros();
2626
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.bit_width()`
2727

28-
error: manually reimplementing `bit_width`
29-
--> tests/ui/manual_bit_width.rs:14:13
28+
error: manual implementation of `bit_width`
29+
--> tests/ui/manual_bit_width.rs:11:13
3030
|
3131
LL | let _ = usize::BITS - x.leading_zeros();
3232
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.bit_width()`

0 commit comments

Comments
 (0)