|
1 | 1 | use rustc_hir::def_id::LocalDefId; |
2 | 2 | use rustc_hir::intravisit::FnKind; |
3 | 3 | use rustc_hir::{Body, FnDecl}; |
4 | | -use rustc_lint::{LateContext, LateLintPass}; |
| 4 | +use rustc_lint::Level::Deny; |
| 5 | +use rustc_lint::{LateContext, LateLintPass, Lint}; |
5 | 6 | use rustc_session::declare_lint_pass; |
6 | 7 | use rustc_span::Span; |
7 | 8 |
|
8 | | -declare_clippy_lint! { |
9 | | - /// ### What it does |
10 | | - /// Checks for comparisons where one side of the relation is |
11 | | - /// either the minimum or maximum value for its type and warns if it involves a |
12 | | - /// case that is always true or always false. Only integer and boolean types are |
13 | | - /// checked. |
14 | | - /// |
15 | | - /// ### Why is this bad? |
16 | | - /// An expression like `min <= x` may misleadingly imply |
17 | | - /// that it is possible for `x` to be less than the minimum. Expressions like |
18 | | - /// `max < x` are probably mistakes. |
19 | | - /// |
20 | | - /// ### Known problems |
21 | | - /// For `usize` the size of the current compile target will |
22 | | - /// be assumed (e.g., 64 bits on 64 bit systems). This means code that uses such |
23 | | - /// a comparison to detect target pointer width will trigger this lint. One can |
24 | | - /// use `mem::sizeof` and compare its value or conditional compilation |
25 | | - /// attributes |
26 | | - /// like `#[cfg(target_pointer_width = "64")] ..` instead. |
27 | | - /// |
28 | | - /// ### Example |
29 | | - /// ```no_run |
30 | | - /// let vec: Vec<isize> = Vec::new(); |
31 | | - /// if vec.len() <= 0 {} |
32 | | - /// if 100 > i32::MAX {} |
33 | | - /// ``` |
34 | | - #[clippy::version = "1.82.0"] |
35 | | - pub CLIPPY_CTFE, |
36 | | - correctness, |
37 | | - "a comparison with a maximum or minimum value that is always true or false" |
38 | | -} |
| 9 | +/// Ensures that Constant-time Function Evaluation is being done (specifically, MIR lint passes). |
| 10 | +/// See rust-lang/rust#125116 for more info. |
| 11 | +#[clippy::version = "1.82.0"] |
| 12 | +pub static CLIPPY_CTFE: &Lint = &Lint { |
| 13 | + name: &"clippy::CLIPPY_CTFE", |
| 14 | + default_level: Deny, |
| 15 | + desc: "Ensure CTFE is being made", |
| 16 | + edition_lint_opts: None, |
| 17 | + report_in_external_macro: true, |
| 18 | + future_incompatible: None, |
| 19 | + is_externally_loaded: true, |
| 20 | + crate_level_only: false, |
| 21 | + eval_always: true, |
| 22 | + ..Lint::default_fields_for_macro() |
| 23 | +}; |
| 24 | + |
| 25 | +// No static CLIPPY_CTFE_INFO because we want this lint to be invisible |
39 | 26 |
|
40 | 27 | declare_lint_pass! { ClippyCtfe => [CLIPPY_CTFE] } |
41 | 28 |
|
|
0 commit comments