Commit Graph

15453 Commits

Author SHA1 Message Date
bors
5825ae7bd4 Auto merge of - ebobrow:mul-add-negative, r=Manishearth
`suboptimal_flops` lint for multiply and subtract

fixes 

changelog: [`suboptimal_flops`] lint for multiply and subtract
2022-10-03 17:12:10 +00:00
bors
09e6c239f3 Auto merge of - royrustdev:manual_saturating_add, r=llogiq
new `implicit_saturating_add` lint

This fixes 

If you added a new lint, here's a checklist for things that will be
checked during review or continuous integration.

- \[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`
- \[x] Added lint documentation
- \[x] Run `cargo dev fmt`

---

changelog: add [`manual_saturating_add`] lint
2022-10-03 11:32:06 +00:00
royrustdev
f1c831ad17 add implicit_saturating_add lint 2022-10-03 16:46:38 +05:30
bors
18e10ca290 Auto merge of - TennyZhuang:upper_case_acronyms-enum, r=llogiq
let `upper_case_acronyms` check the enum name

Signed-off-by: TennyZhuang <zty0826@gmail.com>

Fix 

changelog: [`upper_case_acronyms`]: check the enum name
2022-10-03 09:01:05 +00:00
Elliot Bobrow
15431b36bb
Merge branch 'master' into mul-add-negative 2022-10-02 21:27:57 -07:00
Elliot Bobrow
7747032b77 suboptimal_flops lint for multiply and subtract 2022-10-02 21:00:51 -07:00
TennyZhuang
bf18768219 let upper_case_acronyms check the enum name
Signed-off-by: TennyZhuang <zty0826@gmail.com>
2022-10-03 10:11:57 +08:00
bors
2be6c4ae5b Auto merge of - Jarcho:visitor, r=Jarcho
Replace `expr_visitor` with  `for_each_expr`

This is a minor change which uses `ControlFlow` rather than a boolean. This also runs the visitor rather than returning the visitor, which results in a small readability win as well.

changelog: None
2022-10-03 00:05:05 +00:00
Jason Newcomb
26bb36636c Workaround rustc bug 2022-10-02 17:54:44 -04:00
Jason Newcomb
38236a7135 Use for_each_expr in place of some visitors 2022-10-02 17:15:19 -04:00
Jason Newcomb
649d443646 Replace expr_visitor with for_each_expr 2022-10-02 17:04:22 -04:00
bors
bef93d3b14 Auto merge of - Jarcho:fix_match_type_on_diagnostic_items, r=llogiq
Fix and improve `match_type_on_diagnostic_item`

This extracts the fix for the lint out of . There's still a couple of other functions to check, but at least this will get lint working again.

The two added util functions (`is_diagnostic_item` and `is_lang_item`) are needed to handle `DefId` for unit and tuple struct/variant constructors. The `rustc_diagnostic_item` and `lang` attributes are attached to the struct/variant `DefId`, but most of the time they are used through their constructors which have a different `DefId`. The two utility functions will check if the `DefId` is for a constructor and switch to the associated struct/variant `DefId`.

There does seem to be a bug on rustc's side where constructor `DefId`s from external crates seem to be returning `DefKind::Variant` instead of `DefKind::Ctor()`. There's a workaround put in right.

changelog: None
2022-10-02 19:46:46 +00:00
Yuri Astrakhan
eb3970285b fallout: fix tests to allow uninlined_format_args
In order to switch `clippy::uninlined_format_args` from pedantic to
style, all existing tests must not raise a warning. I did not want to
change the actual tests, so this is a relatively minor change that:

* add `#![allow(clippy::uninlined_format_args)]` where needed
* normalizes all allow/deny/warn attributes
   * all allow attributes are grouped together
   * sorted alphabetically
   * the `clippy::*` attributes are listed separate from the other ones.
   * deny and warn attributes are listed before the allowed ones

changelog: none
2022-10-02 15:13:22 -04:00
bors
0341198ba1 Auto merge of - Alexendoo:unused-fixed, r=Jarcho
Remove unused `.fixed` files, only run asm_syntax doctests on x86

Two small changes, removes some unused `.fixed` and makes `clippy_lints` doctests pass on non x86 arches

changelog: none
2022-10-02 19:06:58 +00:00
Jason Newcomb
162aa19793 Fix and improve internal lint checking for match_type usages
* Check for `const`s and `static`s from external crates
* Check for `LangItem`s
* Handle inherent functions which have the same name as a field
* Also check the following functions:
    * `match_trait_method`
    * `match_def_path`
    * `is_expr_path_def_path`
    * `is_qpath_def_path`
* Handle checking for a constructor to a diagnostic item or `LangItem`
2022-10-02 15:02:55 -04:00
Jason Newcomb
8e7af6b429 Replace is_lang_ctor with is_res_lang_ctor 2022-10-02 14:50:37 -04:00
kraktus
830fdf2b56 update rust version introduction 2022-10-02 17:45:44 +02:00
kraktus
b89ac0cefc refactor manual_filter
Move common functions to `manual_utils.rs`, better arm matching, use clippy utils `contains_unsafe_block`
2022-10-03 14:13:15 +02:00
bors
f8ba19287d Auto merge of - TennyZhuang:unnecessary_cast_for_non_literal_expr, r=llogiq
let unnecessary_cast work for trivial non_literal expressions

Signed-off-by: TennyZhuang <zty0826@gmail.com>

---

changelog: [`unnecessary_cast`]: fix for trivial non_literal expressions

Fixes 
2022-10-02 15:26:45 +00:00
bors
11a6d19c59 Auto merge of - kraktus:manual_assert2, r=llogiq
[`manual_assert`]: Preserve comments in the suggestion

close https://github.com/rust-lang/rust-clippy/issues/7730

changelog: [`manual_assert`]: Preserve comments in the suggestion
2022-10-02 15:13:32 +00:00
TennyZhuang
c9b93143d5 fix some logics
Signed-off-by: TennyZhuang <zty0826@gmail.com>
2022-10-02 23:02:13 +08:00
TennyZhuang
bff811bfdf extract common codes
Signed-off-by: TennyZhuang <zty0826@gmail.com>
2022-10-02 23:02:13 +08:00
TennyZhuang
f2043989ca ignore the lint on some test files
Signed-off-by: TennyZhuang <zty0826@gmail.com>
2022-10-02 23:02:13 +08:00
TennyZhuang
081f73954b let unnecessary_cast work for trivial non_literal expressions
Signed-off-by: TennyZhuang <zty0826@gmail.com>
2022-10-02 23:02:11 +08:00
bors
ac12011315 Auto merge of - kraktus:unnecessary_cast, r=llogiq
[`unnecessary_cast`] add parenthesis when negative number uses a method

fix 

The issue was probably introduced by 90fe3bea52

changelog: [`unnecessary_cast`] add parenthesis when negative number uses a method

r? llogiq
2022-10-02 14:18:41 +00:00
kraktus
3ab02aa359 fix tests 2022-10-02 15:25:50 +02:00
bors
d6d5ecd625 Auto merge of - rust-lang:refactor-lit-ints, r=Jarcho
use `is_integer_literal` more

I noticed that we have the `is_integer_literal` function in our `clippy_utils`, yet almost everywhere people still match int literal expressions manually. So I searched for instances to replace and shorten the code a bit.

---

changelog: none
2022-10-02 13:11:21 +00:00
kraktus
22be60b4f0 fix indentation 2022-10-02 15:03:48 +02:00
kraktus
a35734c172 revert manual_assert suggestion refactor
Because `Sugg` helper does not simplify multiple negations
2022-10-02 15:03:48 +02:00
kraktus
2c04c1a188 [manual_assert]: Preserve comments in the suggestion 2022-10-02 15:03:48 +02:00
kraktus
90b446fd38 [unnecessary_cast] add parenthesis when negative number uses a method 2022-10-02 14:35:38 +02:00
bors
5d837b58f7 Auto merge of - Alexendoo:needless-borrowed-ref-slice, r=dswij
lint nested patterns and slice patterns in `needless_borrowed_reference`

Now lints in positions other than top level, e.g. `Some(&ref a)`. Or patterns are excluded as that can cause issues

Slice patterns of `ref`s are now linted, e.g. `&[ref a, ref b]`. An easy one to walk into as you might expect that to match against a slice you should use `&[]`,  then to get around a `cannot move out of type [T]` error you apply a `ref`

changelog: [`needless_borrowed_reference`]: lint nested patterns and slice patterns
2022-10-02 10:39:04 +00:00
bors
cb8da67194 Auto merge of - schubart:fix_sorting, r=llogiq
Fix sorting in ` cargo dev update_lints` script

changelog: none

The old code cloned and sorted `usable_lints` into `sorted_usable_lints`, but then failed to do anything with `sorted_usable_lints`.

This was discovered by my new `collection_is_never_read` lint () that I'm working on!

Fix: I renamed the sorted vector to `usable_lints`.  Therefore it now gets used where the unsorted one was used previously.
2022-10-02 07:51:45 +00:00
Alex Macleod
52a68dc097 lint nested patterns and slice patterns in needless_borrowed_reference 2022-10-01 22:31:10 +00:00
Alex Macleod
a834ac9800 Only run x86 asm doctests on x86 2022-10-01 22:27:38 +00:00
Alex Macleod
5a54db1286 Remove unused .fixed files 2022-10-01 22:24:48 +00:00
bors
64243c6f99 Auto merge of - Xaeroxe:clamping-without-clamp, r=Alexendoo
Implement `manual_clamp` lint

Fixes 
Fixes 

Identifies common patterns where usage of the `clamp` function would be more succinct and clear, and suggests using the `clamp` function instead.

changelog: [`manual_clamp`]: Implement manual_clamp lint
2022-10-01 20:55:20 +00:00
Jacob Kiesel
b221184572 Implement manual_clamp lint 2022-10-01 13:58:41 -06:00
Nilstrieb
2b944d0c38
Fix example 2022-10-01 20:48:52 +02:00
Nilstrieb
169ef781f9
Improve wording 2022-10-01 20:12:51 +02:00
Nilstrieb
b91dc03510
Add as_ptr_cast_mut lint
This lint detects calls to a `&self`-taking `as_ptr` method, where
the result is then immediately cast to a `*mut T`. Code like this
is probably invalid, as that pointer will not have write permissions,
and `*mut T` is usually used to write through.
2022-10-01 19:23:53 +02:00
bors
9b6b452cff Auto merge of - matthiaskrgr:rtu_from_cratesio, r=xFrednet
use rustc_tools_util dependency from crates.io instead of this repo.

Fixes 

changelog: none
2022-10-01 16:22:58 +00:00
Andre Bogus
eef5d477b5 use is_integer_literal more 2022-10-01 17:55:22 +02:00
Matthias Krüger
ce609c661b use rustc_tools_util dependency from crates.io instead of this repo.
Fixes 
2022-10-01 16:40:10 +02:00
bors
8da24295c6 Auto merge of - rust-lang:doc-link-with-code, r=Alexendoo
avoid doc-link-with-quotes in code blocks

This fixes  by moving the lint into the docs code, thus being able to re-use the pulldown-cmark parser and simplifying the code.

---

changelog: none
2022-10-01 14:33:13 +00:00
bors
8030ee9ae7 Auto merge of - matthiaskrgr:tools_util_bump, r=flip1995
rustc_tool_utils: bump version in anticipation of a new release

cc https://github.com/rust-lang/rust-clippy/issues/9553

After this is merged, I will publish the 0.2.1 version to crates.io, and make another PR that switches clippy to use the dependency from crates.io.
The source can still be kept in the clippy repo though imo.

This will allow miri and clippy to "share" the crate in the rustc repo once they both depend on it.

reopen of 

changelog: release `rustc_tools_util` on `Crates.io`.
2022-10-01 14:20:32 +00:00
Matthias Krüger
418b30b499 rustc_tool_utils bump version in anticipation of a new release
cc https://github.com/rust-lang/rust-clippy/issues/9553
2022-10-01 16:13:48 +02:00
Andre Bogus
3757a0e903 avoid doc-link-with-quotes in code blocks 2022-10-01 15:25:37 +02:00
bors
9e8f53d09a Auto merge of - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank
Move lint level source explanation to the bottom

So, uhhhhh

r? `@estebank`

## User-facing change

"note: `#[warn(...)]` on by default" and such are moved to the bottom of the diagnostic:
```diff
-   = note: `#[warn(unsupported_calling_conventions)]` on by default
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue  <https://github.com/rust-lang/rust/issues/87678>
+   = note: `#[warn(unsupported_calling_conventions)]` on by default
```

Why warning is enabled is the least important thing, so it shouldn't be the first note the user reads, IMO.

## Developer-facing change

`struct_span_lint` and similar methods have a different signature.

Before: `..., impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>)`
After: `..., impl Into<DiagnosticMessage>, impl for<'a, 'b> FnOnce(&'b mut DiagnosticBuilder<'a, ()>) -> &'b mut DiagnosticBuilder<'a, ()>`

The reason for this is that `struct_span_lint` needs to edit the diagnostic _after_ `decorate` closure is called. This also makes lint code a little bit nicer in my opinion.

Another option is to use `impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>) -> DiagnosticBuilder<'a, ()>` altough I don't _really_ see reasons to do `let lint = lint.build(message)` everywhere.

## Subtle problem

By moving the message outside of the closure (that may not be called if the lint is disabled) `format!(...)` is executed earlier, possibly formatting `Ty` which may call a query that trims paths that crashes the compiler if there were no warnings...

I don't think it's that big of a deal, considering that we move from `format!(...)` to `fluent` (which is lazy by-default) anyway, however this required adding a workaround which is unfortunate.

## P.S.

I'm sorry, I do not how to make this PR smaller/easier to review. Changes to the lint API affect SO MUCH 😢
2022-10-01 10:44:25 +00:00
Maybe Waffle
8dfbad9e49 bless clippy 2022-10-01 10:03:06 +00:00