about summary refs log tree commit diff
diff options
context:
space:
mode:
authorkyoto7250 <50972773+kyoto7250@users.noreply.github.com>2022-05-28 14:33:06 +0900
committerkyoto7250 <50972773+kyoto7250@users.noreply.github.com>2022-05-28 14:45:25 +0900
commit6fd2c6de90423ff6096da4005229df3b2110629d (patch)
tree82e253706906f34cf9c4f45b7b9a507b0f5053ec
parentb97784fd07b1981292703fb136cf6e4f7cddc113 (diff)
downloadrust-6fd2c6de90423ff6096da4005229df3b2110629d.tar.gz
rust-6fd2c6de90423ff6096da4005229df3b2110629d.zip
fix(lint): check const context
https://github.com/rust-lang/rust-clippy/issues/8898
-rw-r--r--clippy_lints/src/checked_conversions.rs3
-rw-r--r--tests/ui/checked_conversions.fixed5
-rw-r--r--tests/ui/checked_conversions.rs5
3 files changed, 12 insertions, 1 deletions
diff --git a/clippy_lints/src/checked_conversions.rs b/clippy_lints/src/checked_conversions.rs
index 7eeaaa01921..df3485533b3 100644
--- a/clippy_lints/src/checked_conversions.rs
+++ b/clippy_lints/src/checked_conversions.rs
@@ -2,7 +2,7 @@
 
 use clippy_utils::diagnostics::span_lint_and_sugg;
 use clippy_utils::source::snippet_with_applicability;
-use clippy_utils::{meets_msrv, msrvs, SpanlessEq};
+use clippy_utils::{in_constant, meets_msrv, msrvs, SpanlessEq};
 use if_chain::if_chain;
 use rustc_ast::ast::LitKind;
 use rustc_errors::Applicability;
@@ -61,6 +61,7 @@ impl<'tcx> LateLintPass<'tcx> for CheckedConversions {
         }
 
         let result = if_chain! {
+            if !in_constant(cx, item.hir_id);
             if !in_external_macro(cx.sess(), item.span);
             if let ExprKind::Binary(op, left, right) = &item.kind;
 
diff --git a/tests/ui/checked_conversions.fixed b/tests/ui/checked_conversions.fixed
index 0983d393b56..cb7100bc9ef 100644
--- a/tests/ui/checked_conversions.fixed
+++ b/tests/ui/checked_conversions.fixed
@@ -71,4 +71,9 @@ pub fn i8_to_u8(value: i8) {
     let _ = value >= 0;
 }
 
+// Do not lint
+pub const fn issue_8898(i: u32) -> bool {
+    i <= i32::MAX as u32
+}
+
 fn main() {}
diff --git a/tests/ui/checked_conversions.rs b/tests/ui/checked_conversions.rs
index 7d26ace47fd..ed4e0692388 100644
--- a/tests/ui/checked_conversions.rs
+++ b/tests/ui/checked_conversions.rs
@@ -71,4 +71,9 @@ pub fn i8_to_u8(value: i8) {
     let _ = value >= 0;
 }
 
+// Do not lint
+pub const fn issue_8898(i: u32) -> bool {
+    i <= i32::MAX as u32
+}
+
 fn main() {}