Commit Graph

9555 Commits

Author SHA1 Message Date
Centri3 243943ff56 make it work for locals as well
oopos
2023-06-12 03:22:01 -05:00
Centri3 7cdd87ca4a ignore generics and allow arbitrary threshold 2023-06-12 03:22:01 -05:00
Centri3 03c8db048e make cargo test pass + example 2023-06-12 03:21:43 -05:00
Centri3 e2ecb132a5 rename the lint 2023-06-12 03:21:43 -05:00
Centri3 52cfc997af Add lint `single_letter_idents` 2023-06-12 03:21:43 -05:00
bors 903fe3b9f2 Auto merge of #10894 - Centri3:type_repetition_in_bounds, r=blyxyas,xFrednet
[`type_repetition_in_bounds`]: Don't lint on derived code

fixes #10504.

changelog: [`type_repetition_in_bounds`]: Don't lint on derived code
2023-06-12 07:18:39 +00:00
bors 841f2199e0 Auto merge of #10416 - Jarcho:explicit_iter_loop_ext, r=Manishearth
Extend `explicit_iter_loop` and `explicit_into_iter_loop`

fixes #1518

Some included cleanups
* Split `for_loop` test into different files for each lint (partially).
* Move handling of some `into_iter` cases from `explicit_into_iter`.

---

changelog: Enhancement: [`explicit_iter_loop`]: Now also handles types that implement `IntoIterator`.
[#10416](https://github.com/rust-lang/rust-clippy/pull/10416)

changelog: Sugg: [`explicit_into_iter_loop`]: The suggestion now works on mutable references.
[#10416](https://github.com/rust-lang/rust-clippy/pull/10416)
<!-- changelog_checked -->
2023-06-12 05:30:32 +00:00
bors 21e6235b4c Auto merge of #10921 - Centri3:needless_if, r=blyxyas,Manishearth
Add `needless_if` lint

first off: Sorry about the large diff. Seems a ton of tests do this (understandably so).

this is basically everything I wanted in #10868, while it doesn't lint *all* unnecessary empty blocks, it lints needless if statements; which are basically the crux of the issue (for me) anyway. I've committed code that includes this far too many times 😅 hopefully clippy can help me out soon

closes #10868

changelog: New lint [`needless_if`]
2023-06-12 04:18:50 +00:00
Centri3 108c04acf0 Stop visiting once it's found `Let` 2023-06-11 09:43:26 -05:00
Centri3 59bca098f9 don't lint on `if let`
don't lint on `if let`
2023-06-11 07:02:20 -05:00
Centri3 4c7bc1785d ignore more type aliases in unnecessary_cast
ignore more type aliases in unnecessary_cast
2023-06-11 06:59:01 -05:00
Centri3 b2bdc37a55 add description
add description
2023-06-11 05:46:18 -05:00
bors e986b6444e Auto merge of #10917 - Centri3:module_inception, r=xFrednet
allow disabling module inception on private modules

Fixes #10842

changelog: Enhancement [`module_inception`]: Added `allow-private-module-inception` configuration.
[#10917](https://github.com/rust-lang/rust-clippy/pull/10917)
<!-- changelog_checked -->
2023-06-10 13:21:48 +00:00
Centri3 b303e2053c allow disabling module inception on private modules
allow disabling module inception on private modules
2023-06-10 08:09:07 -05:00
bors 9011c4d248 Auto merge of #10918 - Centri3:patch-2, r=xFrednet
Fix `excessive_nesting` example

whoops 😅

changelog: none
2023-06-10 13:06:44 +00:00
Centri3 26f50395ba Add `needless_if` lint 2023-06-10 06:51:03 -05:00
Jason Newcomb 949712c90a Reborrow mutable references in `explicit_iter_loop` 2023-06-09 21:40:03 -04:00
Jason Newcomb 482baf2bcc Fix `explicit_into_iter_loop` with mutable references 2023-06-09 21:40:03 -04:00
bors d44ea7c5c5 Auto merge of #10785 - Centri3:diverting_sub_expression, r=Jarcho
Fix `diverging_sub_expression` not checking body of block

Fixes #10776

This also adds a warning to the test `ui/never_loop.rs`, not sure if this is correct or not.

changelog: [`diverging_sub_expression`]: Fix false negatives with body of block
2023-06-10 00:16:43 +00:00
Jason Newcomb b6fa4d43d3 Extend `explicit_iter_loop` to all types 2023-06-09 19:24:55 -04:00
Catherine d1957b87c8
Update excessive_nesting.rs 2023-06-09 16:29:34 -05:00
Catherine b7fedb88cf
Update excessive_nesting.rs 2023-06-09 16:28:01 -05:00
bors 476efe92e7 Auto merge of #10672 - Centri3:excessive-width-lints, r=Alexendoo
Add `excessive_nesting` lint

changelog: new lint [`excessive_nesting`]
2023-06-09 20:47:06 +00:00
Centri3 35aff1ae86 refactor 2023-06-09 15:32:42 -05:00
Centri3 c1c134a288 ensure there are no stmts for expr check 2023-06-09 11:44:59 -05:00
Centri3 0c545c7bcc also lint single expression blocks
Update mixed_read_write_in_expression.rs

Update diverging_sub_expression.stderr
2023-06-09 11:44:59 -05:00
bors 05de787089 Auto merge of #10913 - y21:issue10033, r=Manishearth,Centri3
[`unnecessary_to_owned`]: check that the adjusted type matches target

Fixes #10033.

Before this change, the lint would assume that removing the `.to_string()` in `f(&x.to_string())` would be ok if x is of some type that implements `Deref<Target = str>` and `f` takes a `&str`.
This turns out to not actually be ok if the `to_string` call is some method that exists on `x` directly, which happens if it implements `Display`/`ToString` itself.

changelog: [`unnecessary_to_owned`]: only lint if the adjusted receiver type actually matches
2023-06-09 08:52:44 +00:00
y21 dd084940de check that the adjusted receiver type matches target 2023-06-09 04:13:00 +02:00
bors 384cf37612 Auto merge of #10910 - Alexendoo:unnecessary-pointer-casts, r=llogiq
Ignore more pointer types in `unnecessary_cast`

Spotted this because

e2c655b4c0/tests/ui/suspicious_to_owned.rs (L9-L10)

currently fails on `aarch64-unknown-linux-gnu` as `c_char` is `u8` there

The current implementation checks for `as alias`, `as _`. This adds things like
- `as *const alias`
- `as *const cfg_dependant`
- `as *const _`

changelog: none
2023-06-08 19:38:12 +00:00
Alex Macleod 4346c992cb Ignore more pointer types in `unnecessary_cast` 2023-06-08 18:19:35 +00:00
Alex Macleod 96697d2ee7 Fix `useless_vec` suggestion in `for _ in vec![..]` 2023-06-08 17:27:12 +00:00
bors b7c330fc78 Auto merge of #10905 - y21:issue10684, r=Alexendoo
[`redundant_closure`]: special case inclusive ranges

Fixes #10684.

`x..=y` ranges need a bit of special handling in this lint because it desugars to a call to the lang item `RangeInclusiveNew`, where the callee span would be the same as the range expression itself, so the suggestion looked a bit weird. It now correctly suggests `RangeInclusive::new`.

changelog: [`redundant_closure`]: special case `RangeInclusive`
2023-06-08 12:15:35 +00:00
bors 60258b061d Auto merge of #10898 - avborhanian:master, r=Manishearth,Centri3
Adds new lint `arc_with_non_send_or_sync`

Fixes #653

Adds a new lint to check for uses of non-Send/Sync types within Arc.

```
changelog: [`arc_with_non_send_sync`]: Added a lint to detect uses of non-Send/Sync types within Arc.
```
2023-06-08 09:46:01 +00:00
avborhanian 20548eba6c Swapping to matches macro. 2023-06-08 00:38:18 -07:00
avborhanian 2f5d1c748a Adding extra check to ignore generic args. 2023-06-08 00:22:04 -07:00
bors 177c6fea1f Auto merge of #10901 - y21:smarter-useless-vec, r=Manishearth,Centri3
[`useless_vec`]: lint `vec!` invocations when a slice or an array would do

First off, sorry for that large diff in tests. *A lot* of tests seem to trigger the lint with this new change, so I decided to `#![allow()]` the lint in the affected tests to make reviewing this easier, and also split the commits up so that the first commit is the actual logic of the lint and the second commit contains all the test changes. The stuff that changed in the tests is mostly just line numbers now. So, as large as the diff looks, it's not actually that bad. 😅
I manually went through all of these to find out about edge cases and decided to put them in `tests/ui/vec.rs`.

For more context, I wrote about the idea of this PR here: https://github.com/rust-lang/rust-clippy/issues/2262#issuecomment-1579155257 (that explains the logic)

Basically, it now also considers the case where a `Vec` is put in a local variable and the user only ever does things with it that one could also do with a slice or an array. This should catch a lot more cases, and (at least from looking at the tests) it does.

changelog: [`useless_vec`]: lint `vec!` invocations when a slice or an array would do (also considering local variables now)
2023-06-08 04:33:26 +00:00
bors 9ca1344d9a Auto merge of #10904 - lochetti:fix_10273, r=Centri3
`suspicious_else_formatting`: Don't warn if there is a comment between else and curly bracket

This PR fixes https://github.com/rust-lang/rust-clippy/issues/10273

The idea is that if the only thing after `else` and before `{` is a comment, we will not warn because, probably, the line break was "made" by rustfmt.

changelog: [`suspicious_else_formatting`]: Don't warn if the only thing between `else` and curly bracket is a comment
2023-06-08 04:18:08 +00:00
avborhanian 8330887e1b Updating documentation and lint formatting. 2023-06-07 20:53:52 -07:00
avborhanian 339cd14f27 Adds new lint `arc_with_non_send_or_sync` 2023-06-07 20:53:48 -07:00
Centri3 5da34559ee Check if from proc macro and better tests 2023-06-07 18:34:34 -05:00
Centri3 725399a178 move to `complexity` but don't lint by default 2023-06-07 18:34:34 -05:00
Centri3 378d77584a work with lint attributes 2023-06-07 18:34:34 -05:00
Centri3 493a23e957 check non-inline modules, ignore all macros 2023-06-07 18:34:34 -05:00
Centri3 88143ac295 decided against reinventing the wheel 2023-06-07 18:34:34 -05:00
Catherine a9da61b115 couple more notes 2023-06-07 18:34:34 -05:00
Centri3 e68dbc3308 add `excessive_nesting`
Close code block in example
2023-06-07 18:34:34 -05:00
Centri3 4af3ac1cd8 change it to nursery category 2023-06-07 18:22:50 -05:00
Centri3 97c10075ec add the `excessive_*` style lints 2023-06-07 18:22:50 -05:00
bors 2360f80143 Auto merge of #10897 - y21:issue10887, r=Alexendoo
[`missing_fields_in_debug`]: don't ICE when self type is a generic param

Fixes #10887

This PR fixes an ICE that happens when the implementor (self type) of a `Debug` impl is a generic parameter.
The lint calls `TyCtxt::type_of` with that self type, which ICEs when called with generic parameters, so this just adds a quick check before getting there to ignore them.

That can only happen inside of core itself (afaik) because the orphan rules forbid defining an impl such as `impl<T> Debug for T` outside of core, so I'm not sure how to add a test for this.
It seems like this impl in particular caused this: https://doc.rust-lang.org/stable/std/fmt/trait.Debug.html#impl-Debug-for-F

changelog: [`missing_fields_in_debug`]: don't ICE on blanket `Debug` impl in core
2023-06-07 22:35:52 +00:00
y21 9ff34acf21 actually don't lint for inclusive range 2023-06-08 00:34:23 +02:00