mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-21 17:52:12 +03:00
fix: manual_div_ceil wrongly unmangled macros
This commit is contained in:
@@ -148,7 +148,8 @@ fn build_suggestion(
|
||||
rhs: &Expr<'_>,
|
||||
applicability: &mut Applicability,
|
||||
) {
|
||||
let dividend_sugg = Sugg::hir_with_applicability(cx, lhs, "..", applicability).maybe_paren();
|
||||
let ctxt = expr.span.ctxt();
|
||||
let dividend_sugg = Sugg::hir_with_context(cx, lhs, ctxt, "..", applicability).maybe_paren();
|
||||
let rhs_ty = cx.typeck_results().expr_ty(rhs);
|
||||
let type_suffix = if cx.typeck_results().expr_ty(lhs).is_numeric()
|
||||
&& matches!(
|
||||
@@ -186,7 +187,7 @@ fn build_suggestion(
|
||||
};
|
||||
|
||||
// Dereference the RHS if it is a reference type
|
||||
let divisor_snippet = match Sugg::hir_with_context(cx, rhs, expr.span.ctxt(), "_", applicability) {
|
||||
let divisor_snippet = match Sugg::hir_with_context(cx, rhs, ctxt, "_", applicability) {
|
||||
sugg if rhs_ty.is_ref() => sugg.deref(),
|
||||
sugg => sugg,
|
||||
};
|
||||
|
||||
@@ -16,6 +16,12 @@ macro_rules! eight {
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! plus_one {
|
||||
($val:expr) => {
|
||||
($val + 1)
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = 7_u32;
|
||||
let y = 4_u32;
|
||||
@@ -55,6 +61,9 @@ fn main() {
|
||||
// Also test if RHS should be result of macro expansion
|
||||
let _ = 33u32.div_ceil(eight!());
|
||||
//~^ manual_div_ceil
|
||||
|
||||
let _ = plus_one!(x).div_ceil(y);
|
||||
//~^ manual_div_ceil
|
||||
}
|
||||
|
||||
fn issue_13843() {
|
||||
|
||||
@@ -16,6 +16,12 @@ macro_rules! eight {
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! plus_one {
|
||||
($val:expr) => {
|
||||
($val + 1)
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = 7_u32;
|
||||
let y = 4_u32;
|
||||
@@ -55,6 +61,9 @@ fn main() {
|
||||
// Also test if RHS should be result of macro expansion
|
||||
let _ = (33u32 + 7) / eight!();
|
||||
//~^ manual_div_ceil
|
||||
|
||||
let _ = (plus_one!(x) + (y - 1)) / y;
|
||||
//~^ manual_div_ceil
|
||||
}
|
||||
|
||||
fn issue_13843() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:25:13
|
||||
--> tests/ui/manual_div_ceil.rs:31:13
|
||||
|
|
||||
LL | let _ = (x + (y - 1)) / y;
|
||||
| ^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(y)`
|
||||
@@ -8,25 +8,25 @@ LL | let _ = (x + (y - 1)) / y;
|
||||
= help: to override `-D warnings` add `#[allow(clippy::manual_div_ceil)]`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:27:13
|
||||
--> tests/ui/manual_div_ceil.rs:33:13
|
||||
|
|
||||
LL | let _ = ((y - 1) + x) / y;
|
||||
| ^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(y)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:29:13
|
||||
--> tests/ui/manual_div_ceil.rs:35:13
|
||||
|
|
||||
LL | let _ = (x + y - 1) / y;
|
||||
| ^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(y)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:32:13
|
||||
--> tests/ui/manual_div_ceil.rs:38:13
|
||||
|
|
||||
LL | let _ = (7_u32 + (4 - 1)) / 4;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `7_u32.div_ceil(4)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:34:13
|
||||
--> tests/ui/manual_div_ceil.rs:40:13
|
||||
|
|
||||
LL | let _ = (7_i32 as u32 + (4 - 1)) / 4;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(7_i32 as u32).div_ceil(4)`
|
||||
@@ -54,100 +54,106 @@ LL | y!();
|
||||
= note: this error originates in the macro `y` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:56:13
|
||||
--> tests/ui/manual_div_ceil.rs:62:13
|
||||
|
|
||||
LL | let _ = (33u32 + 7) / eight!();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `33u32.div_ceil(eight!())`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:62:13
|
||||
--> tests/ui/manual_div_ceil.rs:65:13
|
||||
|
|
||||
LL | let _ = (plus_one!(x) + (y - 1)) / y;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `plus_one!(x).div_ceil(y)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:71:13
|
||||
|
|
||||
LL | let _ = (2048 + x - 1) / x;
|
||||
| ^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048_usize.div_ceil(x)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:66:13
|
||||
--> tests/ui/manual_div_ceil.rs:75:13
|
||||
|
|
||||
LL | let _ = (2048usize + x - 1) / x;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048usize.div_ceil(x)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:70:13
|
||||
--> tests/ui/manual_div_ceil.rs:79:13
|
||||
|
|
||||
LL | let _ = (2048_usize + x - 1) / x;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048_usize.div_ceil(x)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:74:13
|
||||
--> tests/ui/manual_div_ceil.rs:83:13
|
||||
|
|
||||
LL | let _ = (x + 4 - 1) / 4;
|
||||
| ^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(4)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:77:18
|
||||
--> tests/ui/manual_div_ceil.rs:86:18
|
||||
|
|
||||
LL | let _: u32 = (2048 + 6 - 1) / 6;
|
||||
| ^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048_u32.div_ceil(6)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:79:20
|
||||
--> tests/ui/manual_div_ceil.rs:88:20
|
||||
|
|
||||
LL | let _: usize = (2048 + 6 - 1) / 6;
|
||||
| ^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048_usize.div_ceil(6)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:81:18
|
||||
--> tests/ui/manual_div_ceil.rs:90:18
|
||||
|
|
||||
LL | let _: u32 = (0x2048 + 0x6 - 1) / 0x6;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `0x2048_u32.div_ceil(0x6)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:84:13
|
||||
--> tests/ui/manual_div_ceil.rs:93:13
|
||||
|
|
||||
LL | let _ = (2048 + 6u32 - 1) / 6u32;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `2048_u32.div_ceil(6u32)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:87:13
|
||||
--> tests/ui/manual_div_ceil.rs:96:13
|
||||
|
|
||||
LL | let _ = (1_000_000 + 6u32 - 1) / 6u32;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `1_000_000_u32.div_ceil(6u32)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:93:13
|
||||
--> tests/ui/manual_div_ceil.rs:102:13
|
||||
|
|
||||
LL | let _ = (x + 7) / 8;
|
||||
| ^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(8)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:95:13
|
||||
--> tests/ui/manual_div_ceil.rs:104:13
|
||||
|
|
||||
LL | let _ = (7 + x) / 8;
|
||||
| ^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(8)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:105:13
|
||||
--> tests/ui/manual_div_ceil.rs:114:13
|
||||
|
|
||||
LL | let _ = (size + c - 1) / c;
|
||||
| ^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `size.div_ceil(*c)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:121:13
|
||||
--> tests/ui/manual_div_ceil.rs:130:13
|
||||
|
|
||||
LL | let _ = x.next_multiple_of(8) / 8;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(8)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:123:13
|
||||
--> tests/ui/manual_div_ceil.rs:132:13
|
||||
|
|
||||
LL | let _ = u32::next_multiple_of(x, 8) / 8;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(8)`
|
||||
|
||||
error: manually reimplementing `div_ceil`
|
||||
--> tests/ui/manual_div_ceil.rs:127:13
|
||||
--> tests/ui/manual_div_ceil.rs:136:13
|
||||
|
|
||||
LL | let _ = y.next_multiple_of(8) / 8;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `y.div_ceil(8)`
|
||||
|
||||
error: aborting due to 23 previous errors
|
||||
error: aborting due to 24 previous errors
|
||||
|
||||
|
||||
Reference in New Issue
Block a user