First submit

This commit is contained in:
Jaic1 2022-03-28 12:09:01 +08:00
parent 6206086dd5
commit ec851b870b
4 changed files with 29 additions and 1 deletions

View File

@ -4,7 +4,8 @@ use clippy_utils::source::snippet_opt;
use if_chain::if_chain;
use rustc_ast::{LitFloatType, LitIntType, LitKind};
use rustc_errors::Applicability;
use rustc_hir::{Expr, ExprKind, Lit, UnOp};
use rustc_hir::def::Res;
use rustc_hir::{Expr, ExprKind, Lit, QPath, TyKind, UnOp};
use rustc_lint::{LateContext, LintContext};
use rustc_middle::lint::in_external_macro;
use rustc_middle::ty::{self, FloatTy, InferTy, Ty};
@ -18,6 +19,17 @@ pub(super) fn check(
cast_from: Ty<'_>,
cast_to: Ty<'_>,
) -> bool {
// skip non-primitive type cast
if_chain! {
if let ExprKind::Cast(_, cast_to) = expr.kind;
if let TyKind::Path(QPath::Resolved(_, path)) = &cast_to.kind;
if let Res::PrimTy(_) = path.res;
then {}
else {
return false
}
}
if let Some(lit) = get_numeric_literal(cast_expr) {
let literal_str = snippet_opt(cx, cast_expr.span).unwrap_or_default();

View File

@ -30,4 +30,10 @@ fn main() {
// do not lint cast to cfg-dependant type
1 as std::os::raw::c_char;
// do not lint cast to alias type
1 as I32Alias;
&1 as &I32Alias;
}
type I32Alias = i32;

View File

@ -42,4 +42,9 @@ fn main() {
let _ = -1_i32;
let _ = -1.0_f32;
let _ = 1 as I32Alias;
let _ = &1 as &I32Alias;
}
type I32Alias = i32;

View File

@ -42,4 +42,9 @@ fn main() {
let _ = -1 as i32;
let _ = -1.0 as f32;
let _ = 1 as I32Alias;
let _ = &1 as &I32Alias;
}
type I32Alias = i32;