Skip to content
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
0b43e03
Add applicability visually
SpencerAWill Apr 5, 2024
e4ce248
Complete filter functionality. Formatted upper filters to take more v…
SpencerAWill Apr 9, 2024
c8a7e6e
Remove debug helper.
SpencerAWill Apr 11, 2024
dff9164
consider `copy_deref` a possible borrower
y21 May 2, 2024
20d1bb1
[`assigning_clones`]: bail out when the source borrows from target
y21 May 2, 2024
60508f5
deal with non-`Drop` types and add a test case for projections
y21 May 2, 2024
5e60afb
[ arc_with_non_send_sync ]: fix doc nits
bitfield Jun 3, 2024
7ab4af3
[ needless_for_each ]: fix doc nits
bitfield Jun 3, 2024
35d284f
[ allow_attributes ]: fix doc nits
bitfield Jun 3, 2024
8da5d64
[ allow_attributes_without_reason ]: fix doc nits
bitfield Jun 3, 2024
7c86db4
[ mut_range_bound ]: fix doc nits
bitfield Jun 3, 2024
059eaf1
Fix ICE in `upper_case_acronyms` and remove most of the string alloc…
Jarcho Jun 8, 2024
70ca9a1
Lint `manual_unwrap_or` for it let cases
lochetti Jun 8, 2024
c3d4633
Fixup clippy tests
WaffleLapkin May 23, 2024
3bff119
Merge commit '3e5a02b13b1244545454752c6629b767522a44b1' into clippy-s…
flip1995 Jun 13, 2024
ba347f9
Auto merge of #126398 - flip1995:clippy-subtree-update, r=Manishearth
bors Jun 13, 2024
fa9274c
Tweak output of import suggestions
estebank Jun 12, 2024
82f0dc9
[`missing_const_for_fn`]: add machine-applicable suggestion
DaniPopes Jun 14, 2024
73c1bfb
Auto merge of #12880 - bitfield:fix_doc_nits_b, r=Alexendoo
bors Jun 15, 2024
477b0c6
lintcheck: Add JSON output, diff subcommand
Alexendoo Nov 1, 2022
feb0671
Add lintcheck diff github action
Alexendoo Feb 24, 2023
0dc265f
Auto merge of #12756 - y21:assigning_clones_lifetimes, r=Alexendoo
bors Jun 15, 2024
63388cb
add MSRV for manual_pattern_char_comparison
AurelienFT Jun 15, 2024
51c6630
Change MSRV check for manual_pattern_char_comparison only for pattern…
AurelienFT Jun 15, 2024
bcc7b0e
Fix minor typo
elijah-potter Jun 15, 2024
82345c3
Auto merge of #12937 - AurelienFT:add_msrv_manual_patter_char_compari…
bors Jun 15, 2024
a2c9782
Auto merge of #10398 - Alexendoo:auto-lintcheck, r=xFrednet
bors Jun 16, 2024
3a983c3
Merge lintcheck popular-crates bin as a subcommand
Alexendoo Jun 16, 2024
8065e0f
Auto merge of #12939 - Alexendoo:lintcheck-popular-crates, r=xFrednet
bors Jun 16, 2024
3405ce3
Add field_scoped_visibility_modifiers lint
kyleoneill Jun 16, 2024
9f5d60f
Auto merge of #12893 - kyleoneill:field_scoped_visibility_modifiers, …
bors Jun 16, 2024
a002f93
`expr_use_ctxt` changes:
Jarcho Feb 12, 2024
22710f3
Add lint `manual_inspect`
Jarcho Feb 12, 2024
16efa56
Auto merge of #12287 - Jarcho:issue_12250, r=llogiq
bors Jun 16, 2024
e18b310
Add more types to `is_from_proc_macro`
Jarcho Jun 17, 2024
f09650b
Use symbols when raising range expressions.
Jarcho Jun 16, 2024
4b16e26
Rework `octal_escapes`.
Jarcho Jun 15, 2024
6172178
Auto merge of #12938 - elijah-potter:patch-1, r=flip1995
bors Jun 17, 2024
2ad53f4
Auto merge of #12943 - Jarcho:range_sym, r=llogiq
bors Jun 17, 2024
198bbf8
Pause assignments to @xFrednet for summer break :beach_umbrella:
xFrednet Jun 17, 2024
9550481
Auto merge of #12947 - xFrednet:00000-summer-assignments, r=xFrednet
bors Jun 17, 2024
0625183
Auto merge of #12903 - Jarcho:issue_12284, r=y21
bors Jun 17, 2024
51c5eee
Auto merge of #12945 - Jarcho:octal_escape, r=Alexendoo
bors Jun 17, 2024
9e54ff2
Auto merge of #12906 - lochetti:manual_unwrap_or_if_let, r=y21
bors Jun 17, 2024
61fc1ae
Rework precise capturing syntax
compiler-errors Jun 5, 2024
7218fdd
Fix other tools
compiler-errors Jun 6, 2024
e28b998
Add myself back to reviewer rotation
Centri3 Jun 18, 2024
7e1ed1a
Auto merge of #12953 - Centri3:back, r=Centri3
bors Jun 18, 2024
bd75e44
Auto merge of #12655 - SpencerAWill:Add-applicability-filter, r=xFrednet
bors Jun 18, 2024
4b7ae63
Use a dedicated type instead of a reference for the diagnostic context
oli-obk Jun 18, 2024
29cc5c6
Auto merge of #12942 - Jarcho:ex_proc_macro, r=Manishearth
bors Jun 18, 2024
8cde354
Resolve Clippy `f16` and `f128` `unimplemented!`/`FIXME`s
tgross35 Jun 18, 2024
c693f31
Update float tests to include `f16` and `f128`
tgross35 Jun 18, 2024
b147b6d
Don't lint implicit_return on proc macros
lochetti Jun 19, 2024
4aee08f
Auto merge of #12963 - lochetti:fix_12874, r=Centri3
bors Jun 19, 2024
9749d99
resolve `clippy::invalid_paths` on `bool::then`
KisaragiEffective Jun 20, 2024
3baafd2
Fix `...` in multline code-skips in suggestions
estebank Jun 20, 2024
2f9f204
feat: unnecessary_min_max lint
l0ngvh Feb 28, 2024
3e84ca8
Auto merge of #12368 - vohoanglong0107:unnecessary-min, r=Alexendoo
bors Jun 20, 2024
f6661f5
StaticForeignItem and StaticItem are the same
compiler-errors Jun 20, 2024
4baae5d
Add new `Span` utils to avoid both allocating and
Jarcho Jun 20, 2024
fe2fe7f
Auto merge of #12972 - Jarcho:span_ex, r=Manishearth
bors Jun 21, 2024
54b45f7
Fix incorrect suggestion for `manual_unwrap_or_default`
GuillaumeGomez Jun 19, 2024
0ce07f6
Auto merge of #12961 - GuillaumeGomez:fix-manual_unwrap_or_default, r…
bors Jun 21, 2024
58fc27f
Rollup merge of #126723 - estebank:dot-dot-dot, r=Nadrieril
GuillaumeGomez Jun 22, 2024
26c556d
Auto merge of #12965 - KisaragiEffective:resolve-invalid-paths-on-boo…
bors Jun 22, 2024
51ccad6
use short message format in integration test
llogiq Jun 23, 2024
9628130
Auto merge of #12985 - llogiq:fix-integration-test, r=Alexendoo
bors Jun 23, 2024
2194304
Cache lintcheck binary in ci
Alexendoo Jun 22, 2024
32374a1
Auto merge of #12930 - DaniPopes:missing-const-for-fn-suggestion, r=J…
bors Jun 23, 2024
35ec4eb
Rename the 2 unambiguous precedence levels to PREC_UNAMBIGUOUS
dtolnay Jun 24, 2024
8c718e5
ast: Standardize visiting order for attributes and node IDs
petrochenkov May 29, 2024
8631790
Auto merge of #12986 - Alexendoo:cache-lintcheck-bin, r=flip1995
bors Jun 24, 2024
606ada1
bump strip-ansi-escapes
klensy Jun 24, 2024
a155c38
Split out IntoIterator and non-Iterator constructors for AliasTy/Alia…
compiler-errors Jun 21, 2024
8998ce2
Replace Deref bounds on Interner in favor of a SliceLike trait
compiler-errors Jun 21, 2024
dfaa53f
Auto merge of #125741 - petrochenkov:atvisord, r=davidtwco
bors Jun 25, 2024
1b4c281
RFC 2383: Stabilize `lint_reasons` in Clippy :paperclips:
xFrednet Feb 10, 2024
01b3c24
Rollup merge of #126893 - dtolnay:prec, r=compiler-errors
matthiaskrgr Jun 25, 2024
3bbec6a
`sudo CI=green` && Review changes <3
xFrednet Jun 4, 2024
f90d702
Auto merge of #120924 - xFrednet:rfc-2383-stabilization-party, r=Urga…
bors Jun 26, 2024
80b25b4
Fix doc_markdown DevOps false positive
reillysiemens Jun 25, 2024
aaaa926
Auto merge of #12995 - reillysiemens:fix-doc-markdown-devops-false-po…
bors Jun 27, 2024
4ddc8a2
Auto merge of #12992 - klensy:lintcheck-bump, r=Alexendoo
bors Jun 27, 2024
e9e7a81
Merge remote-tracking branch 'upstream/master' into rustup
flip1995 Jun 27, 2024
585170e
Bump nightly version -> 2024-06-27
flip1995 Jun 27, 2024
68a799a
Auto merge of #12999 - flip1995:rustup, r=flip1995
bors Jun 27, 2024
3ce7f9e
Merge commit '68a799aea9b65e2444fbecfe32217ce7d5a3604f' into clippy-s…
flip1995 Jun 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1943,7 +1943,7 @@ Released 2022-05-19
[#8218](https://github.com/rust-lang/rust-clippy/pull/8218)
* [`needless_match`]
[#8471](https://github.com/rust-lang/rust-clippy/pull/8471)
* [`allow_attributes_without_reason`] (Requires `#![feature(lint_reasons)]`)
* [`allow_attributes_without_reason`]
[#8504](https://github.com/rust-lang/rust-clippy/pull/8504)
* [`print_in_format_impl`]
[#8253](https://github.com/rust-lang/rust-clippy/pull/8253)
Expand Down
2 changes: 2 additions & 0 deletions book/src/lint_configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,8 @@ The minimum rust version that the project supports. Defaults to the `rust-versio

---
**Affected lints:**
* [`allow_attributes`](https://rust-lang.github.io/rust-clippy/master/index.html#allow_attributes)
* [`allow_attributes_without_reason`](https://rust-lang.github.io/rust-clippy/master/index.html#allow_attributes_without_reason)
* [`almost_complete_range`](https://rust-lang.github.io/rust-clippy/master/index.html#almost_complete_range)
* [`approx_constant`](https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant)
* [`assigning_clones`](https://rust-lang.github.io/rust-clippy/master/index.html#assigning_clones)
Expand Down
2 changes: 1 addition & 1 deletion clippy_config/src/conf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ define_Conf! {
///
/// Suppress lints whenever the suggested change would cause breakage for other crates.
(avoid_breaking_exported_api: bool = true),
/// Lint: MANUAL_SPLIT_ONCE, MANUAL_STR_REPEAT, CLONED_INSTEAD_OF_COPIED, REDUNDANT_FIELD_NAMES, OPTION_MAP_UNWRAP_OR, REDUNDANT_STATIC_LIFETIMES, FILTER_MAP_NEXT, CHECKED_CONVERSIONS, MANUAL_RANGE_CONTAINS, USE_SELF, MEM_REPLACE_WITH_DEFAULT, MANUAL_NON_EXHAUSTIVE, OPTION_AS_REF_DEREF, MAP_UNWRAP_OR, MATCH_LIKE_MATCHES_MACRO, MANUAL_STRIP, MISSING_CONST_FOR_FN, UNNESTED_OR_PATTERNS, FROM_OVER_INTO, PTR_AS_PTR, IF_THEN_SOME_ELSE_NONE, APPROX_CONSTANT, DEPRECATED_CFG_ATTR, INDEX_REFUTABLE_SLICE, MAP_CLONE, BORROW_AS_PTR, MANUAL_BITS, ERR_EXPECT, CAST_ABS_TO_UNSIGNED, UNINLINED_FORMAT_ARGS, MANUAL_CLAMP, MANUAL_LET_ELSE, UNCHECKED_DURATION_SUBTRACTION, COLLAPSIBLE_STR_REPLACE, SEEK_FROM_CURRENT, SEEK_REWIND, UNNECESSARY_LAZY_EVALUATIONS, TRANSMUTE_PTR_TO_REF, ALMOST_COMPLETE_RANGE, NEEDLESS_BORROW, DERIVABLE_IMPLS, MANUAL_IS_ASCII_CHECK, MANUAL_REM_EUCLID, MANUAL_RETAIN, TYPE_REPETITION_IN_BOUNDS, TUPLE_ARRAY_CONVERSIONS, MANUAL_TRY_FOLD, MANUAL_HASH_ONE, ITER_KV_MAP, MANUAL_C_STR_LITERALS, ASSIGNING_CLONES, LEGACY_NUMERIC_CONSTANTS, MANUAL_PATTERN_CHAR_COMPARISON.
/// Lint: MANUAL_SPLIT_ONCE, MANUAL_STR_REPEAT, CLONED_INSTEAD_OF_COPIED, REDUNDANT_FIELD_NAMES, OPTION_MAP_UNWRAP_OR, REDUNDANT_STATIC_LIFETIMES, FILTER_MAP_NEXT, CHECKED_CONVERSIONS, MANUAL_RANGE_CONTAINS, USE_SELF, MEM_REPLACE_WITH_DEFAULT, MANUAL_NON_EXHAUSTIVE, OPTION_AS_REF_DEREF, MAP_UNWRAP_OR, MATCH_LIKE_MATCHES_MACRO, MANUAL_STRIP, MISSING_CONST_FOR_FN, UNNESTED_OR_PATTERNS, FROM_OVER_INTO, PTR_AS_PTR, IF_THEN_SOME_ELSE_NONE, APPROX_CONSTANT, DEPRECATED_CFG_ATTR, INDEX_REFUTABLE_SLICE, MAP_CLONE, BORROW_AS_PTR, MANUAL_BITS, ERR_EXPECT, CAST_ABS_TO_UNSIGNED, UNINLINED_FORMAT_ARGS, MANUAL_CLAMP, MANUAL_LET_ELSE, UNCHECKED_DURATION_SUBTRACTION, COLLAPSIBLE_STR_REPLACE, SEEK_FROM_CURRENT, SEEK_REWIND, UNNECESSARY_LAZY_EVALUATIONS, TRANSMUTE_PTR_TO_REF, ALMOST_COMPLETE_RANGE, NEEDLESS_BORROW, DERIVABLE_IMPLS, MANUAL_IS_ASCII_CHECK, MANUAL_REM_EUCLID, MANUAL_RETAIN, TYPE_REPETITION_IN_BOUNDS, TUPLE_ARRAY_CONVERSIONS, MANUAL_TRY_FOLD, MANUAL_HASH_ONE, ITER_KV_MAP, MANUAL_C_STR_LITERALS, ASSIGNING_CLONES, LEGACY_NUMERIC_CONSTANTS, MANUAL_PATTERN_CHAR_COMPARISON, ALLOW_ATTRIBUTES, ALLOW_ATTRIBUTES_WITHOUT_REASON.
///
/// The minimum rust version that the project supports. Defaults to the `rust-version` field in `Cargo.toml`
#[default_text = ""]
Expand Down
1 change: 1 addition & 0 deletions clippy_config/src/msrvs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ macro_rules! msrv_aliases {

// names may refer to stabilized feature flags or library items
msrv_aliases! {
1,81,0 { LINT_REASONS_STABILIZATION }
1,77,0 { C_STR_LITERALS }
1,76,0 { PTR_FROM_REF, OPTION_RESULT_INSPECT }
1,71,0 { TUPLE_ARRAY_CONVERSIONS, BUILD_HASHER_HASH_ONE }
Expand Down
73 changes: 0 additions & 73 deletions clippy_lints/src/allow_attributes.rs

This file was deleted.

26 changes: 26 additions & 0 deletions clippy_lints/src/attrs/allow_attributes.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
use super::ALLOW_ATTRIBUTES;
use clippy_utils::diagnostics::span_lint_and_sugg;
use clippy_utils::is_from_proc_macro;
use rustc_ast::{AttrStyle, Attribute};
use rustc_errors::Applicability;
use rustc_lint::{LateContext, LintContext};
use rustc_middle::lint::in_external_macro;

// Separate each crate's features.
pub fn check<'cx>(cx: &LateContext<'cx>, attr: &'cx Attribute) {
if !in_external_macro(cx.sess(), attr.span)
&& let AttrStyle::Outer = attr.style
&& let Some(ident) = attr.ident()
&& !is_from_proc_macro(cx, attr)
{
span_lint_and_sugg(
cx,
ALLOW_ATTRIBUTES,
ident.span,
"#[allow] attribute found",
"replace it with",
"expect".into(),
Applicability::MachineApplicable,
);
}
}
5 changes: 0 additions & 5 deletions clippy_lints/src/attrs/allow_attributes_without_reason.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,6 @@ use rustc_span::sym;
use rustc_span::symbol::Symbol;

pub(super) fn check<'cx>(cx: &LateContext<'cx>, name: Symbol, items: &[NestedMetaItem], attr: &'cx Attribute) {
// Check for the feature
if !cx.tcx.features().lint_reasons {
return;
}

// Check if the reason is present
if let Some(item) = items.last().and_then(NestedMetaItem::meta_item)
&& let MetaItemKind::NameValue(_) = &item.kind
Expand Down
76 changes: 62 additions & 14 deletions clippy_lints/src/attrs/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! checks for attributes

mod allow_attributes;
mod allow_attributes_without_reason;
mod blanket_clippy_restriction_lints;
mod deprecated_cfg_attr;
Expand All @@ -14,11 +15,11 @@ mod unnecessary_clippy_cfg;
mod useless_attribute;
mod utils;

use clippy_config::msrvs::Msrv;
use clippy_config::msrvs::{self, Msrv};
use rustc_ast::{Attribute, MetaItemKind, NestedMetaItem};
use rustc_hir::{ImplItem, Item, ItemKind, TraitItem};
use rustc_lint::{EarlyContext, EarlyLintPass, LateContext, LateLintPass};
use rustc_session::{declare_lint_pass, impl_lint_pass};
use rustc_session::impl_lint_pass;
use rustc_span::sym;
use utils::{is_lint_level, is_relevant_impl, is_relevant_item, is_relevant_trait};

Expand Down Expand Up @@ -270,26 +271,19 @@ declare_clippy_lint! {

declare_clippy_lint! {
/// ### What it does
/// Checks for attributes that allow lints without specifying the reason
/// they should be allowed. (This requires the `lint_reasons` feature.)
/// Checks for attributes that allow lints without a reason.
///
/// ### Why restrict this?
/// There should always be a specific reason to allow a lint. This reason
/// should be documented using the `reason` parameter, so that readers can
/// understand why the `allow` is required, or remove it if it's no
/// longer needed.
/// Justifying each `allow` helps readers understand the reasoning,
/// and may allow removing `allow` attributes if their purpose is obsolete.
///
/// ### Example
/// ```no_run
/// #![feature(lint_reasons)]
///
/// #![allow(clippy::some_lint)]
/// ```
///
/// Use instead:
/// ```no_run
/// #![feature(lint_reasons)]
///
/// #![allow(clippy::some_lint, reason = "False positive rust-lang/rust-clippy#1002020")]
/// ```
#[clippy::version = "1.61.0"]
Expand All @@ -298,6 +292,41 @@ declare_clippy_lint! {
"ensures that all `allow` and `expect` attributes have a reason"
}

declare_clippy_lint! {
/// ### What it does
/// Checks for usage of the `#[allow]` attribute and suggests replacing it with
/// the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
///
/// This lint only warns outer attributes (`#[allow]`), as inner attributes
/// (`#![allow]`) are usually used to enable or disable lints on a global scale.
///
/// ### Why is this bad?
/// `#[expect]` attributes suppress the lint emission, but emit a warning, if
/// the expectation is unfulfilled. This can be useful to be notified when the
/// lint is no longer triggered.
///
/// ### Example
/// ```rust,ignore
/// #[allow(unused_mut)]
/// fn foo() -> usize {
/// let mut a = Vec::new();
/// a.len()
/// }
/// ```
/// Use instead:
/// ```rust,ignore
/// #[expect(unused_mut)]
/// fn foo() -> usize {
/// let mut a = Vec::new();
/// a.len()
/// }
/// ```
#[clippy::version = "1.70.0"]
pub ALLOW_ATTRIBUTES,
restriction,
"`#[allow]` will not trigger if a warning isn't found. `#[expect]` triggers if there are no warnings."
}

declare_clippy_lint! {
/// ### What it does
/// Checks for `#[should_panic]` attributes without specifying the expected panic message.
Expand Down Expand Up @@ -470,7 +499,13 @@ declare_clippy_lint! {
"duplicated attribute"
}

declare_lint_pass!(Attributes => [
#[derive(Clone)]
pub struct Attributes {
msrv: Msrv,
}

impl_lint_pass!(Attributes => [
ALLOW_ATTRIBUTES,
ALLOW_ATTRIBUTES_WITHOUT_REASON,
INLINE_ALWAYS,
DEPRECATED_SEMVER,
Expand All @@ -481,6 +516,13 @@ declare_lint_pass!(Attributes => [
DUPLICATED_ATTRIBUTES,
]);

impl Attributes {
#[must_use]
pub fn new(msrv: Msrv) -> Self {
Self { msrv }
}
}

impl<'tcx> LateLintPass<'tcx> for Attributes {
fn check_crate(&mut self, cx: &LateContext<'tcx>) {
blanket_clippy_restriction_lints::check_command_line(cx);
Expand All @@ -493,7 +535,11 @@ impl<'tcx> LateLintPass<'tcx> for Attributes {
if is_lint_level(ident.name, attr.id) {
blanket_clippy_restriction_lints::check(cx, ident.name, items);
}
if matches!(ident.name, sym::allow | sym::expect) {
if matches!(ident.name, sym::allow) && self.msrv.meets(msrvs::LINT_REASONS_STABILIZATION) {
allow_attributes::check(cx, attr);
}
if matches!(ident.name, sym::allow | sym::expect) && self.msrv.meets(msrvs::LINT_REASONS_STABILIZATION)
{
allow_attributes_without_reason::check(cx, ident.name, items, attr);
}
if items.is_empty() || !attr.has_name(sym::deprecated) {
Expand Down Expand Up @@ -538,6 +584,8 @@ impl<'tcx> LateLintPass<'tcx> for Attributes {
inline_always::check(cx, item.span, item.ident.name, cx.tcx.hir().attrs(item.hir_id()));
}
}

extract_msrv_attr!(LateContext);
}

pub struct EarlyAttributes {
Expand Down
2 changes: 1 addition & 1 deletion clippy_lints/src/bool_assert_comparison.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ fn is_impl_not_trait_with_bool_out<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -
)
})
.map_or(false, |assoc_item| {
let proj = Ty::new_projection(cx.tcx, assoc_item.def_id, cx.tcx.mk_args_trait(ty, []));
let proj = Ty::new_projection_from_args(cx.tcx, assoc_item.def_id, cx.tcx.mk_args_trait(ty, []));
let nty = cx.tcx.normalize_erasing_regions(cx.param_env, proj);

nty.is_bool()
Expand Down
1 change: 1 addition & 0 deletions clippy_lints/src/casts/cast_nan_to_int.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, cast_expr: &Expr<'_>,

fn is_known_nan(cx: &LateContext<'_>, e: &Expr<'_>) -> bool {
match constant(cx, cx.typeck_results(), e) {
// FIXME(f16_f128): add these types when nan checks are available on all platforms
Some(Constant::F64(n)) => n.is_nan(),
Some(Constant::F32(n)) => n.is_nan(),
_ => false,
Expand Down
2 changes: 1 addition & 1 deletion clippy_lints/src/declared_lints.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
#[cfg(feature = "internal")]
crate::utils::internal_lints::unsorted_clippy_utils_paths::UNSORTED_CLIPPY_UTILS_PATHS_INFO,
crate::absolute_paths::ABSOLUTE_PATHS_INFO,
crate::allow_attributes::ALLOW_ATTRIBUTES_INFO,
crate::almost_complete_range::ALMOST_COMPLETE_RANGE_INFO,
crate::approx_const::APPROX_CONSTANT_INFO,
crate::arc_with_non_send_sync::ARC_WITH_NON_SEND_SYNC_INFO,
Expand All @@ -49,6 +48,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
crate::assertions_on_result_states::ASSERTIONS_ON_RESULT_STATES_INFO,
crate::assigning_clones::ASSIGNING_CLONES_INFO,
crate::async_yields_async::ASYNC_YIELDS_ASYNC_INFO,
crate::attrs::ALLOW_ATTRIBUTES_INFO,
crate::attrs::ALLOW_ATTRIBUTES_WITHOUT_REASON_INFO,
crate::attrs::BLANKET_CLIPPY_RESTRICTION_LINTS_INFO,
crate::attrs::DEPRECATED_CFG_ATTR_INFO,
Expand Down
6 changes: 3 additions & 3 deletions clippy_lints/src/dereference.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use clippy_utils::{
expr_use_ctxt, get_parent_expr, is_block_like, is_lint_allowed, path_to_local, DefinedTy, ExprUseNode,
};
use core::mem;
use rustc_ast::util::parser::{PREC_POSTFIX, PREC_PREFIX};
use rustc_ast::util::parser::{PREC_PREFIX, PREC_UNAMBIGUOUS};
use rustc_data_structures::fx::FxIndexMap;
use rustc_errors::Applicability;
use rustc_hir::intravisit::{walk_ty, Visitor};
Expand Down Expand Up @@ -1007,7 +1007,7 @@ fn report<'tcx>(
let (precedence, calls_field) = match cx.tcx.parent_hir_node(data.first_expr.hir_id) {
Node::Expr(e) => match e.kind {
ExprKind::Call(callee, _) if callee.hir_id != data.first_expr.hir_id => (0, false),
ExprKind::Call(..) => (PREC_POSTFIX, matches!(expr.kind, ExprKind::Field(..))),
ExprKind::Call(..) => (PREC_UNAMBIGUOUS, matches!(expr.kind, ExprKind::Field(..))),
_ => (e.precedence().order(), false),
},
_ => (0, false),
Expand Down Expand Up @@ -1154,7 +1154,7 @@ impl<'tcx> Dereferencing<'tcx> {
},
Some(parent) if !parent.span.from_expansion() => {
// Double reference might be needed at this point.
if parent.precedence().order() == PREC_POSTFIX {
if parent.precedence().order() == PREC_UNAMBIGUOUS {
// Parentheses would be needed here, don't lint.
*outer_pat = None;
} else {
Expand Down
7 changes: 3 additions & 4 deletions clippy_lints/src/float_literal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,18 +141,17 @@ impl<'tcx> LateLintPass<'tcx> for FloatLiteral {
#[must_use]
fn max_digits(fty: FloatTy) -> u32 {
match fty {
// FIXME(f16_f128): replace the magic numbers once `{f16,f128}::DIGITS` are available
FloatTy::F16 => 3,
FloatTy::F16 => f16::DIGITS,
FloatTy::F32 => f32::DIGITS,
FloatTy::F64 => f64::DIGITS,
FloatTy::F128 => 33,
FloatTy::F128 => f128::DIGITS,
}
}

/// Counts the digits excluding leading zeros
#[must_use]
fn count_digits(s: &str) -> usize {
// Note that s does not contain the f32/64 suffix, and underscores have been stripped
// Note that s does not contain the `f{16,32,64,128}` suffix, and underscores have been stripped
s.chars()
.filter(|c| *c != '-' && *c != '.')
.take_while(|c| *c != 'e' && *c != 'E')
Expand Down
Loading