mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
Auto merge of #4026 - cemiloten:working-on-#3981, r=flip1995
Attempt to fix #3981 Fixes #3981 Hi, hopefully this is correct, happy to have feedback. changelog: Don't trigger `unnecessary_cast` inside a macro
This commit is contained in:
commit
6a0105e59f
3 changed files with 18 additions and 3 deletions
|
@ -1110,6 +1110,9 @@ fn fp_ty_mantissa_nbits(typ: Ty<'_>) -> u32 {
|
|||
|
||||
impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Casts {
|
||||
fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) {
|
||||
if in_macro(expr.span) {
|
||||
return;
|
||||
}
|
||||
if let ExprKind::Cast(ref ex, _) = expr.node {
|
||||
let (cast_from, cast_to) = (cx.tables.expr_ty(ex), cx.tables.expr_ty(expr));
|
||||
lint_fn_to_numeric_cast(cx, expr, ex, cast_from, cast_to);
|
||||
|
|
|
@ -48,6 +48,18 @@ fn main() {
|
|||
1f32 as f32;
|
||||
false as bool;
|
||||
&1i32 as &i32;
|
||||
// macro version
|
||||
macro_rules! foo {
|
||||
($a:ident, $b:ident) => {
|
||||
pub fn $a() -> $b {
|
||||
1 as $b
|
||||
}
|
||||
};
|
||||
}
|
||||
foo!(a, i32);
|
||||
foo!(b, f32);
|
||||
foo!(c, f64);
|
||||
|
||||
// casting integer literal to float is unnecessary
|
||||
100 as f32;
|
||||
100 as f64;
|
||||
|
|
|
@ -159,19 +159,19 @@ LL | false as bool;
|
|||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: casting integer literal to f32 is unnecessary
|
||||
--> $DIR/cast.rs:52:5
|
||||
--> $DIR/cast.rs:64:5
|
||||
|
|
||||
LL | 100 as f32;
|
||||
| ^^^^^^^^^^ help: try: `100_f32`
|
||||
|
||||
error: casting integer literal to f64 is unnecessary
|
||||
--> $DIR/cast.rs:53:5
|
||||
--> $DIR/cast.rs:65:5
|
||||
|
|
||||
LL | 100 as f64;
|
||||
| ^^^^^^^^^^ help: try: `100_f64`
|
||||
|
||||
error: casting integer literal to f64 is unnecessary
|
||||
--> $DIR/cast.rs:54:5
|
||||
--> $DIR/cast.rs:66:5
|
||||
|
|
||||
LL | 100_i32 as f64;
|
||||
| ^^^^^^^^^^^^^^ help: try: `100_f64`
|
||||
|
|
Loading…
Reference in a new issue