Commit Graph

11715 Commits

Author SHA1 Message Date
bors
e7d17e6cb2 Auto merge of #13061 - tesuji:fix-map-unwrap-or-13018, r=dswij
Fix `manual_unwrap_or` false positive

changelog: [`manual_unwrap_or`]: fix false positive of `if let Option<T>`

Closes #13018
2024-07-13 15:59:11 +00:00
J-ZhengLi
cc1bb8f57a make [or_fun_call] and [unwrap_or_default] recursive. 2024-07-13 23:15:40 +08:00
bors
0cbbee1e6e Auto merge of #13090 - J-ZhengLi:issue9790, r=blyxyas
[`unwrap_or_default`]: skip warning when calling inside of suggested method's implementation

fixes: #10228

---

changelog: [`unwrap_or_default`]: skip warning when calling inside of suggested method's implementation
2024-07-12 14:37:10 +00:00
J-ZhengLi
983b4c3720 [unwrap_or_default]: skip warning when calling inside of suggested method's implementation 2024-07-12 17:23:08 +08:00
Florian Bartels
edeb0fcddc Fix syntax errors in example code 2024-07-12 11:12:01 +02:00
Philipp Krones
c1fd25d0aa Merge commit 'b794b8e08c16517a941dc598bb1483e8e12a8592' into clippy-subtree-update 2024-07-11 15:44:03 +02:00
Philipp Krones
1ced73e66a
Merge remote-tracking branch 'upstream/master' into rustup 2024-07-11 15:29:08 +02:00
bors
8d3b1f9e30 Auto merge of #12984 - bitfield:fix_doc_nits_c, r=Alexendoo
Fix doc nits

More tender love and polish for the documentation and suggestion texts: adding formatting, links, full stops, tweaking wording for readability, changing 'which' to 'that' where appropriate, and other standard copyediting changes.

changelog: Docs [ `await_holding_lock` ]: fix doc nits
changelog: Docs [ `await_holding_refcell_ref` ]: fix doc nits
changelog: Docs [ `await_holding_invalid_type` ]: fix doc nits
changelog: Docs [ `cast_precision_loss` ]: fix doc nits
changelog: Docs [ `cast_sign_loss` ]: fix doc nits
changelog: Docs [ `cast_possible_truncation` ]: fix doc nits
changelog: Docs [ `cast_possible_wrap` ]: fix doc nits
changelog: Docs [ `cast_lossless` ]: fix doc nits
changelog: Docs [ `unnecessary_cast` ]: fix doc nits
changelog: Docs [ `cast_ptr_alignment` ]: fix doc nits
changelog: Docs [ `fn_to_numeric_cast` ]: fix doc nits
changelog: Docs [ `fn_to_numeric_cast_with_truncation` ]: fix doc nits
changelog: Docs [ `fn_to_numeric_cast_any` ]: fix doc nits
changelog: Docs [ `char_lit_as_u8` ]: fix doc nits
changelog: Docs [ `ptr_as_ptr` ]: fix doc nits
changelog: Docs [ `ptr_cast_constness` ]: fix doc nits
changelog: Docs [ `as_ptr_cast_mut` ]: fix doc nits
changelog: Docs [ `little_endian_bytes` ]: fix doc nits
changelog: Docs [ `big_endian_bytes` ]: fix doc nits
changelog: Docs [ `bind_instead_of_map` ]: fix doc nits
changelog: Docs [ `same_name_method` ]: fix doc nits
2024-07-10 17:55:08 +00:00
bors
b012421501 Auto merge of #12944 - Jarcho:overflow_check, r=y21
Fix and rename `overflow_check_conditional`

fixes #2457

Other changes:
* Limit the lint to unsigned types.
* Actually check if the operands are the same rather than using only the first part of the path.
* Allow the repeated expression to be anything as long as there are no side effects.

changelog: Rename `overflow_check_conditional` to `panicking_overflow_check` and move to `correctness`
2024-07-10 09:02:11 +00:00
bors
ab7c910590 Auto merge of #13079 - sandersaares:u/sasaares/no-epsilon-guidance, r=y21
Fix guidance of [`float_cmp`] and [`float_cmp_const`] to not incorrectly recommend `f__::EPSILON` as the error margin.

Using `f32::EPSILON` or `f64::EPSILON` as the floating-point equality comparison error margin is incorrect, yet `float_cmp` has until now recommended this be done. This change fixes the given guidance (both in docs and compiler hints) to not reference these unsuitable constants.

Instead, the guidance now clarifies that the scenarios in which an absolute error margin is usable, provides a sample implementation for using a user-defined absolute error margin (as an absolute error margin can only be used-defined and may be different for different comparisons) and references the floating point guide for a reference implementation of relative error based equality comparison for cases where absolute error margins cannot be identified.

changelog: [`float_cmp`] Fix guidance to not incorrectly recommend `f__::EPSILON` as the error margin.
changelog: [`float_cmp_const`] Fix guidance to not incorrectly recommend `f__::EPSILON` as the error margin.

Fixes #6816
2024-07-10 06:36:10 +00:00
Sander Saares
e42a380afc Revert accidental "Why restrict this?" change 2024-07-10 08:10:35 +03:00
bors
8fa406b03f Auto merge of #13069 - Jarcho:misc_small4, r=Manishearth
Misc refactorings part 4

And even more rearrangements to check the HIR tree before other checks.

changelog: none
2024-07-09 15:47:24 +00:00
Philipp Gesang
296dcf09fb
unnecessary_struct_initialization: extend to assignments moving all fields
This lint makes Clippy warn about situations where an owned
struct is essentially recreated by moving all its fields into a
new instance of the struct. Until now this lint only triggered
for structs recreated from a base struct.

NB: The new functionality too will cause false positives for the
situation where a non-copy struct consisting of all copy members
is touched again in subsequent code.
2024-07-09 13:53:11 +02:00
Sander Saares
a04dbb0ab9 Tidy the example code and ensure it builds as standalone snippets 2024-07-09 10:28:11 +03:00
Sander Saares
a067cd24ac Replace incorrect suggested fix for float_cmp
Using `f32::EPSILON` or `f64::EPSILON` as the floating-point equality comparison error margin is incorrect, yet `float_cmp` has until now recommended this be done. This change fixes the given guidance (both in docs and compiler hints) to not reference these unsuitable constants.

Instead, the guidance now clarifies that the scenarios in which an absolute error margin is usable, provides a reference implementation of using a user-defined absolute error margin (as an absolute error margin can only be used-defined and may be different for different comparisons) and references the floating point guide for a reference implementation of relative error based equaltiy comparison for when absolute error margin cannot be used.

changelog: Fix guidance of [`float_cmp`] and [`float_cmp_const`] to not incorrectly recommend `f64::EPSILON` as the error margin.

Fixes #6816
2024-07-09 10:12:09 +03:00
bors
87f8a5b374 Auto merge of #13056 - y21:rm-compiler-lint-functions, r=Manishearth
Remove internal `compiler_lint_functions` lint

This internal lint has effectively been superseded by `disallowed_methods` when we started using that in #11811 (I didn't even know that we also had this internal lint at the time of when I created that PR).

Some of the methods that this looks for also don't exist anymore (`span_lint_note` and `span_lint_help`), though there was one that that lint had but wasn't disallowed in clippy.toml (`LintContext::lint`)

changelog: none
2024-07-08 23:10:11 +00:00
bors
e64236ca3a Auto merge of #13044 - Jarcho:bool_int, r=Manishearth
Refactor `bool_to_int_with_if`

Rearranges things to check the HIR tree first and simplifies how the literals are read.

changelog: None
2024-07-08 22:58:50 +00:00
bors
058e6eaa3a Auto merge of #13043 - Jarcho:assign_clone, r=Manishearth
Refactor `assigning_clones`

Short list of changes:
* Inline and simplify `extract_call`
* Inline `is_ok_to_suggest`
* Inline `skip_drop_block`
* Check the HIR tree before the macro check
* Don't call `outer_expn_data`
* Use `find` instead of a loop in `clone_source_borrows_from_dest`

changelog: none
2024-07-08 22:48:19 +00:00
bors
f6020fbd44 Auto merge of #13042 - Jarcho:almost_range, r=Manishearth
`almost_complete_range`: Delay suggestion creation.

Does less work when the lint doesn't trigger.

changelog: none
2024-07-08 22:39:01 +00:00
Michael Goulet
920cbcdd45 Move trait selection error reporting to its own top-level module 2024-07-08 16:04:47 -04:00
John Arundel
d23df74712 resolve code review comments 2024-07-08 19:05:35 +01:00
bors
510cfe3dc4 Auto merge of #13067 - Jarcho:misc_small3, r=Manishearth
Misc refactorings part 3

And some more changes. Same general idea of checking the HIR tree first when linting.

changelog: none
2024-07-08 17:52:47 +00:00
bors
dfb92532fa Auto merge of #12870 - lrh2000:sig-drop-while, r=blyxyas
`significant_drop_in_scrutinee`: Trigger lint also for scrutinees in `while let` and `if let`

This lint should also work for `if let` and `while let`, so this PR makes it actually work.

For `while let`, I can't think of any reason why this lint shouldn't be enabled. The only problem is that the lint suggests moving the significant drop above the `while let`, which is clearly invalid in the case of `while let`. I don't know if this is fixable, but this PR simply disables the wrong suggestions.

For `if let`, it seems that another lint called `if_let_mutex` has some overlapping functionality. But `significant_drop_in_scrutinee` is a bit stricter, as it will trigger even if the `else` branch does not try to lock the same mutex.

changelog: [`significant_drop_in_scrutinee`]: Trigger lint also for scrutinees in `while let` and `if let`.

r? `@blyxyas` (the third PR as promised in https://github.com/rust-lang/rust-clippy/pull/12740#issuecomment-2094876350, thanks for your review!)
2024-07-08 15:09:45 +00:00
bors
2ad8cdc81b Auto merge of #13045 - J-ZhengLi:missing_const_for_fn_FP, r=blyxyas
[`missing_const_for_fn`]: fix FP when arg ty is impl trait alias ty

closes: #13009

---

changelog: [`missing_const_for_fn`]: fix FP when arg ty is impl trait alias ty
2024-07-08 14:39:12 +00:00
J-ZhengLi
08992d0372 [missing_const_for_fn]: fix FP when arg ty is impl trait alias ty 2024-07-08 18:09:49 +08:00
Jason Newcomb
0c72a99cac raw_strings Check HIR tree first. 2024-07-07 22:19:06 -04:00
Jason Newcomb
e12ff630fd permissions_set_readonly_false: Check HIR tree first. 2024-07-07 22:17:43 -04:00
Jason Newcomb
15eac5abd6 Simplify option_env_unwrap. 2024-07-07 22:17:31 -04:00
Jason Newcomb
ff28de20b4 neg_cmp_op_on_partial_ord: Delay macro check 2024-07-07 22:14:43 -04:00
Jason Newcomb
7c17dd331b needless_for_each: Check HIR tree first. 2024-07-07 22:14:24 -04:00
Jason Newcomb
139dad8849 mut_mut: Delay macro check 2024-07-07 22:13:05 -04:00
Jason Newcomb
c22608823f needless_borrowed_ref: Check HIR tree first. 2024-07-07 22:13:05 -04:00
Jason Newcomb
58aa804ada mismatching_type_param_order: Delay macro check. 2024-07-07 22:06:15 -04:00
Jason Newcomb
36a14e3a12 misc:
* Delay macro checks.
* Use `span_lint_hir`.
2024-07-07 22:05:26 -04:00
Jason Newcomb
5b7ffa1a63 Rework init_numbered_fields:
* Only check the name of a single field
* Don't lint in macros
* Check for side effects
* Don't use a binary heap
2024-07-07 20:15:19 -04:00
Jason Newcomb
eda45aaba1 minmax: use let chain 2024-07-07 18:12:39 -04:00
Jason Newcomb
488a545a50 map_unit_fn: Delay macro check 2024-07-07 18:12:05 -04:00
Jason Newcomb
7a942a5c99 manual_unwrap_or_default: Check HIR tree first. 2024-07-07 18:11:55 -04:00
Jason Newcomb
5d333e862b manual_strip: Delay msrv check. 2024-07-07 18:11:43 -04:00
Jason Newcomb
c0068ba5ac manual_slice_size_calculation: Delay constant check. 2024-07-07 18:11:05 -04:00
Jason Newcomb
03117026ae manual_retain: Remove redundant match. 2024-07-07 18:10:46 -04:00
Jason Newcomb
0f4cd13f66 manual_rem_euclid: Check HIR tree first. 2024-07-07 18:08:44 -04:00
Jason Newcomb
44f87e8cc1 manual_range_patterns: Delay macro check. 2024-07-07 18:08:11 -04:00
Jason Newcomb
2309f8e4a1 manual_non_exhaustive: Delay msrv check. 2024-07-07 18:08:02 -04:00
Jason Newcomb
f46c981f3f manual_main_separator_str: Check HIR tree first. 2024-07-07 18:07:52 -04:00
Jason Newcomb
2d9e67ea8a manual_let_else: Delay msrv and macro checks. 2024-07-07 18:07:36 -04:00
Jason Newcomb
95348adcb9 manual_float_methods:
* Check HIR tree first.
* Use `partition_in_place`.
2024-07-07 18:07:16 -04:00
Jason Newcomb
b9ba340db6 manual_bits: Delay msrv check 2024-07-07 18:06:36 -04:00
Jason Newcomb
c0fa6a92f0 literal_representation: Delay macro check. 2024-07-07 18:06:27 -04:00
Jason Newcomb
15f640a7cb let_with_type_underscore:
* Delay macro check.
* Use `is_from_proc_macro
2024-07-07 18:06:17 -04:00
Jason Newcomb
5332def0fd let_underscore: Delay macro check. 2024-07-07 18:06:00 -04:00
Jason Newcomb
fed75b3895 let_if_seq: use array_windows. 2024-07-07 18:05:51 -04:00
Jason Newcomb
ff4e62d3ec len_zero: Check HIR tree first 2024-07-07 18:05:41 -04:00
Jason Newcomb
5ae33c7699 legacy_numeric_constants: Check HIR tree first. 2024-07-07 16:52:59 -04:00
Jason Newcomb
03036c11b3 large_include_file: Check HIR tree first. 2024-07-07 16:52:33 -04:00
Jason Newcomb
c3dd028d3e large_futures: Delay macro check 2024-07-07 16:52:13 -04:00
Jason Newcomb
430c02cbd0 large_enum_variant: Delay macro check 2024-07-07 16:51:58 -04:00
Jason Newcomb
3092c8a5fd large_const_arrays: Check HIR tree first. 2024-07-07 16:51:33 -04:00
Jason Newcomb
6b10b4360c iter_without_into_iter: Delay macro check 2024-07-07 16:51:20 -04:00
Jason Newcomb
fa1a690b23 iter_not_returning_iterator:
* Check HIR tree first.
* Check name by symbol.
2024-07-07 16:43:07 -04:00
Jason Newcomb
ca5c2813eb items_after_statements: Do less work in the default case. 2024-07-07 16:41:36 -04:00
Jason Newcomb
aef0710054 instant_subtraction: Reduce redundant work. 2024-07-07 16:37:51 -04:00
Jason Newcomb
dc8403f0f5 inline_fn_without_body: inline into a single function 2024-07-07 16:37:31 -04:00
Jason Newcomb
8e2ddc800b inherent_to_string: Check HIR tree before checking for macros. 2024-07-07 16:35:05 -04:00
Jason Newcomb
f493d71a38 infinite_iter: Only lock the symbol table once. 2024-07-07 16:27:27 -04:00
Jason Newcomb
c73aceb043 indexing_slicing: Check HIR tree first. 2024-07-07 16:26:57 -04:00
Jason Newcomb
06f83b4e26 index_refutable_slice: Check HIR tree first. 2024-07-07 16:26:42 -04:00
Jason Newcomb
b58b491d16 inconsistent_struct_constructor: Check HIR tree first. 2024-07-07 16:26:04 -04:00
Jason Newcomb
3869e93408 ignored_unit_patterns: Reorder checks. 2024-07-07 16:24:45 -04:00
Jason Newcomb
517e1ac225 if_then_some_else_none: Check HIR tree before other checks. 2024-07-07 16:23:50 -04:00
Jason Newcomb
b26b820f3f Refactor if_not_else:
* Check HIR tree first.
* Merge lint calls.
2024-07-07 16:23:18 -04:00
Jason Newcomb
776a5238b7 if_let_mutex: Use for_each_expr. 2024-07-07 16:16:59 -04:00
Jason Newcomb
c32af26be0 Refactor future_not_send 2024-07-07 16:16:36 -04:00
Jason Newcomb
d409b5c700 extra_unused_type_parameters:
* Inline `is_empty_exported_or_macro`.
* Check if there are any generic parameters before walking the signature.
2024-07-07 16:13:38 -04:00
Jason Newcomb
f178316ae2 Refactor excessive_bools:
* Check HIR tree before checking for macros.
* Check item count before checking for bools.
2024-07-07 16:11:11 -04:00
Jason Newcomb
1b0230cf25 Refactor endian_bytes:
* Merge code paths.
* Check HIR tree before checking for macros.
2024-07-07 16:10:19 -04:00
bors
09c07ed63f Auto merge of #13048 - Jarcho:disallowed_methods, r=blyxyas
Refactor `disallowed_methods` and narrow span

Using the span of the call site just produces noisy diagnostics for long calls. Especially multi-line calls.

changelog: none
2024-07-07 14:28:44 +00:00
Jason Newcomb
d2ff2b9850 Move panicking_overflow_checks into correctness and clean up docs. 2024-07-07 10:24:46 -04:00
Jason Newcomb
23d96f65e4 Rename overflow_check_conditional to panicking_overflow_checks. 2024-07-07 10:24:42 -04:00
Jason Newcomb
aa371c37c2 Rewrite overflow_check_conditional 2024-07-07 10:22:29 -04:00
Lzu Tao
c46c1f6da6 Fix 13018: self should be T
with `Option::unwrap_or(self, T) -> T`.
2024-07-07 20:41:55 +07:00
bors
f2c74e220b Auto merge of #12966 - Rudxain:patch-1, r=dswij
Clarify that `modulo_one` only applies to ints

changelog: [`modulo_one`]: (docs) Clarify that it only applies to integers

This might be nitpicky, but it's more technically correct.

It also helps if a user skims through the docs, because they may believe it also applies to `{float}`s. This doc edit minimizes that possibility
2024-07-07 10:21:47 +00:00
John Arundel
5a9e5e4acf resolve code review comments 2024-07-07 10:49:26 +01:00
John Arundel
f7050b0c78 resolve code review comments 2024-07-07 10:44:27 +01:00
Jason Newcomb
0a25df87ef Refactor double_parens:
* Merge control flow before emission
* Check the AST before the macro check
2024-07-06 22:13:45 -04:00
Jason Newcomb
65b9fae565 Refactor checked_conversions:
* Check HIR tree before checking macros, msrv and constness
* Remove redundant HIR tree matching
2024-07-06 21:47:57 -04:00
Jason Newcomb
d8fb164a7c Rename any_parent_is_automatically_derived to in_automatically_derived. Only check for the attribute on an impl block. 2024-07-06 00:24:48 -04:00
y21
ecbb2d7ba9 remove internal compiler_lint_functions lint 2024-07-06 00:51:58 +02:00
bors
3ed690f07a Auto merge of #12974 - alex-semenyuk:rename_thread_local_initializer_can_be_made_const, r=Alexendoo
Rename thread_local_initializer_can_be_made_const to missing_const_for_thread_local

Close #12934
As discussed at #12934 name `thread_local_initializer_can_be_made_const` sounds against convention for other lints which describe the issue/wrong code but not suggestion and it is quite long. The new name take example from existing lint `missing_const_for_fn`

changelog: `thread_local_initializer_can_be_made_const` : Rename to [`missing_const_for_thread_local`]
2024-07-05 17:50:06 +00:00
Alexey Semenyuk
6621e6cbfa Rename thread_local_initializer_can_be_made_const to missing_const_for_thread_local 2024-07-05 19:40:37 +05:00
bors
94a000b613 Auto merge of #11293 - mrnossiom:11234, r=Jarcho
feat: add cfg_not_test lint

<!--
- \[x] Followed [lint naming conventions][lint_naming]
- \[x] Added passing UI tests (including committed `.stderr` file)
- \[x] `cargo test` passes locally
- \[x] Executed `cargo dev update_lints`
- \[ ] Added lint documentation
- \[x] Run `cargo dev fmt`

[lint_naming]: https://rust-lang.github.io/rfcs/0344-conventions-galore.html#lints
-->

Fixes #11234

changelog: new lint: [`cfg_not_test`]

I don't know whether to lint only the `attr` or also the item associated to it. I guess this would mean putting the check in another place than `check_attribute` but I can't find a way to get the associated item to the attribute.

Also, I'm not sure how to document this lint, I feel like my explications are bad.
2024-07-05 11:42:47 +00:00
bors
3ef366705b Auto merge of #13049 - Jarcho:is_in_test, r=Alexendoo
Remove `is_in_test_module_or_function`

Uses are replaced with `is_in_test` for consistency with other lints and to simplify the implementation of the lints. This means the module name is no longer checked, but that was a horrible hack from a time when late passes couldn't see `#[cfg(..)]` attributes.

changelog: none
2024-07-05 11:33:46 +00:00
Milo Moisson
2c09ac3d39
feat: add cfg_not_test lint 2024-07-05 10:28:26 +02:00
Jason Newcomb
9f59e9a777 from_str_radix_10 : Reorder checks 2024-07-05 03:13:04 -04:00
Jason Newcomb
3fcac2cba8 from_over_into: Check HIR tree first. 2024-07-05 03:12:49 -04:00
Jason Newcomb
278e8371e6 float_literal: Check HIR tree before checking types. 2024-07-05 03:12:32 -04:00
Jason Newcomb
ca7e5c1353 exit: Use OwnerNode. 2024-07-05 03:12:19 -04:00
Jason Newcomb
5368895077 exhaustive_items: Don't check the item kind twice. 2024-07-05 03:11:32 -04:00
Jason Newcomb
5b0dac6fe2 error_impl_error: Get Error DefId after checking the HIR tree. 2024-07-05 03:10:37 -04:00
Jason Newcomb
672b8b512a Refactor empty_enums: Check the HIR tree before the feature check. 2024-07-05 03:10:07 -04:00