Commit Graph

15436 Commits

Author SHA1 Message Date
Alex Macleod fa694ec809 Update CoC to rust-lang/rust's 2022-11-05 21:03:14 +00:00
bors e5474113be Auto merge of #9797 - trevarj:print-config, r=xFrednet
Add allow-print-in-tests config

Add a config, allow-print-in-tests, that can be set in clippy.toml which allows the usage of `[e]print[ln]!` macros in tests.

Closes #9795

---

changelog: Enhancement: [print_stdout], [print_stderr]: Can now be enabled in test with the `allow-print-in-tests` config value
2022-11-05 09:49:40 +00:00
bors 9e0de8cedc Auto merge of #9799 - bebecue:patch-1, r=dswij
Update lint `suspicious_to_owned`

changelog: [`suspicious_to_owned`]: Use explicit type annotation on lint description instead of `matches!`
2022-11-05 07:03:02 +00:00
bors 4cb9681a28 Auto merge of #9753 - smoelius:changelog, r=xFrednet
Update CONTRIBUTING.md with changelog guidance

`@xFrednet` I cribbed some text of yours from https://github.com/rust-lang/rust-clippy/pull/9743#issuecomment-1295892442 and did some light editing in the hope that others might find it.

r? `@xFrednet`

changelog: Update CONTRIBUTING.md with changelog guidance
2022-11-04 21:57:46 +00:00
bebecue f86c35c326
Update lint `suspicious_to_owned`
`matches!(data, String)` will matches any type, replace it with explicit type annotation.
2022-11-05 04:44:02 +08:00
Trevor Arjeski ddcfff6d9a Add allow-print-in-tests config
Add a config, allow-print-in-tests, that can be set in clippy.toml which
allows the usage of `[e]print[ln]!` macros in tests.

Closes #9795
2022-11-04 20:33:04 +03:00
bors 704e00cb75 Auto merge of #9779 - koka831:fix/unnecessary-join-message, r=Jarcho
fix turbofish in suggest message

changelog: [`unnecessary_join`] fix turbofish in suggest message
2022-11-03 16:30:21 +00:00
koka 05006e58c0
fix turbofish in suggest message 2022-11-03 23:53:29 +09:00
bors 6b4e7dd547 Auto merge of #9761 - xFrednet:changelog-1-65, r=giraffate,xFrednet
Changelog for Rust 1.65

Roses are red,
violets are blue,
another 6 weeks,
another changelog, yahoo!

This did not rhyme,
luckily, not a crime.
I want to say something smart,
but I am out of time.

---

Note for the reviewer. This PR is written, as if Rust was already released on 2022-11-03. Please review the changes and approve if you agree, but only merge it after the release. :)

---

changelog: none
2022-11-03 14:49:43 +00:00
bors 8d7f638816 Auto merge of #9773 - Alexendoo:ice-9746, r=Manishearth
Fix ICE in `redundant_allocation`

changelog: Fix ICE in `redundant_allocation`

Closes #9746, the original issue was fixed already, this gets the one in https://github.com/rust-lang/rust-clippy/issues/9746#issuecomment-1297132880
2022-11-02 22:05:20 +00:00
bors 647644b8f6 Auto merge of #9772 - lukas-code:doc-spans, r=Manishearth
Shrink `missing_{safety,errors,panics}_doc` spans

Shrink the spans of `clippy::missing_*_doc` to match `missing_docs` and don't cover the entire item anymore. This helps readability in IDEs by not coloring the entire screen yellow, similar to https://github.com/rust-lang/rust/pull/103749 and https://github.com/rust-lang/rust/pull/90761.

before:
![image](https://user-images.githubusercontent.com/26522220/199483288-af0cf0c2-a9e4-47a8-81e3-50ccf380d939.png)

after:
![image](https://user-images.githubusercontent.com/26522220/199483366-445e5ddd-9f71-4de1-85be-43461c9b7d5d.png)

changelog: [`missing_safety_doc`], [`missing_error_doc`], [`missing_panics_doc`]: These lints no longer span the entire item.
2022-11-02 15:40:07 +00:00
Alex Macleod 517605e1fd Fix ICE in `redundant_allocation` 2022-11-02 13:30:58 +00:00
Lukas Markeffsky d35b7de1d5 shrink `missing_{safety,errors,panics}_doc` spans 2022-11-02 12:47:46 +01:00
xFrednet 30e662d686
Changelog for Rust 1.65 🚥 2022-11-01 15:38:43 +01:00
bors 7600535511 Auto merge of #9743 - smoelius:improve-needless-lifetimes, r=Alexendoo
Improve `needless_lifetimes`

This PR makes the following improvements to `needless_lifetimes`.

* It fixes the following false negative, where `foo` is flagged but `bar` is not:
  ```rust
    fn foo<'a>(x: &'a u8, y: &'_ u8) {}

    fn bar<'a>(x: &'a u8, y: &'_ u8, z: &'_ u8) {}
  ```
* It flags more cases, generally. Previously, `needless_borrow` required *all* lifetimes to be used only once. With the changes, individual lifetimes are flagged for being used only once, even if not all lifetimes are.
* Finally, it tries to produce more clear error messages.

changelog: fix `needless_lifetimes` false negative involving functions with multiple unnamed lifetimes
changelog: in `needless_lifetimes`, flag individual lifetimes used only once, rather than require all lifetimes to be used only once
changelog: in `needless_lifetimes`, emit "replace with `'_`" warnings only when applicable, and point to a generic argument
2022-11-01 00:25:30 +00:00
Samuel Moelius c0d928561c Change two `<=` to `==` for clarity 2022-10-31 20:12:37 -04:00
xFrednet 9e7996b149
Update lint versions for 1.65 2022-10-31 22:11:17 +01:00
bors 37d338c1ef Auto merge of #9506 - blyxyas:master, r=giraffate
Add lint for confusing use of `^` instead of `.pow`

fixes #4205
Adds a lint named [`confusing_xor_and_pow`], it warns the user when `a ^ b` is used as the `.pow()` function, it doesn't warn for Hex, Binary... etc.

---

changelog: New lint: [`confusing_xor_and_pow`]
2022-10-31 00:28:59 +00:00
bors 60d171873a Auto merge of #9734 - alex-semenyuk:badge, r=giraffate
Fix Clippy Test badge

Clippy test badge always shows "no status" message. Fix it for showing real status
changelog: none
2022-10-31 00:15:57 +00:00
bors 00610b30f9 Auto merge of #9747 - kraktus:option_if_let_else, r=Manishearth
[`option_if_let_else`] do not lint if any arm has guard

fix https://github.com/rust-lang/rust-clippy/issues/9742

changelog: [`option_if_let_else`] do not lint if any arm has guard
2022-10-30 22:46:41 +00:00
bors 10e07cc484 Auto merge of #9755 - Alexendoo:restriction-cli-warn, r=Manishearth
Warn when `clippy::restriction` is enabled via the command line

Currently it catches `#![warn(clippy::restriction)]`, it'll now catch `-W clippy::restriction` from the CLI. Also tweaks the message slightly

changelog: [`blanket_clippy_restriction_lints`]: Warn when `clippy::restriction` is enabled via the command line
2022-10-30 22:06:46 +00:00
Alex Macleod b16a534618 Warn when clippy::restriction is enabled via the command line 2022-10-30 21:15:46 +00:00
Samuel Moelius bde33a399d Update CONTRIBUTING.md 2022-10-30 08:09:31 -04:00
Samuel Moelius 2c44398487 Adress review comments 2022-10-30 06:47:35 -04:00
kraktus 00cf07b521 [`option_if_let_else`] do not lint if any arm has guard 2022-10-29 16:44:12 +02:00
bors cca9938694 Auto merge of #9714 - Alexendoo:bool-to-int-if-let, r=xFrednet
Fix `bool_to_int_with_if` false positive with `if let`

Fixes #9706

changelog: FP: [`bool_to_int_with_if`]: Now ignores `if let` statements
2022-10-29 12:22:02 +00:00
Alex Macleod ad5dfcd123 Fix `bool_to_int_with_if` false positive with `if let` 2022-10-29 12:15:51 +00:00
bors 8e19251366 Auto merge of #9738 - kraktus:bool_to_int_with_if, r=xFrednet
[`bool_to_int_with_if`] do not lint in const context

changelog: [`bool_to_int_with_if`] do not lint in const context

fix https://github.com/rust-lang/rust-clippy/issues/9737
2022-10-29 09:29:09 +00:00
bors fdaa425b34 Auto merge of #9648 - llogiq:fix-undocumented-unsafe-blocks, r=Jarcho
fix `undocumented-unsafe-blocks` false positive

This fixes #9142 by iterating over the parent nodes as long as within a block, expression, statement, local, const or static.

---

changelog: none
2022-10-29 01:35:49 +00:00
bors 0ab512c568 Auto merge of #9711 - smoelius:issue-9710, r=Jarcho
Fix `needless_borrow` false positive #9710

Fixes #9710

changelog: fix `needless_borrow` false positive #9710
2022-10-29 00:56:17 +00:00
bors 71ddf815a0 Auto merge of #9741 - llogiq:fix-string-extend-chars-slice-ref, r=Manishearth
fix the `string-extend-chars` suggestion on slice

This adds the missing `&` to the suggestion if the target is a `str` slice (e.g. extending with `"foo"[..].chars()`).

This closes #9735.

---

changelog: fix the `string-extend-chars` suggestion for `str` slices
2022-10-28 22:43:07 +00:00
Andre Bogus e19fe89091 fix `undocumented-unsafe-blocks` false positive 2022-10-28 22:09:36 +02:00
alexey semenyuk 1bfbd3dd60 Fix badge 2022-10-28 20:52:02 +03:00
Samuel Moelius 10b7fabbf3 Fix adjacent code 2022-10-28 13:18:07 -04:00
Samuel Moelius e9216d836c Improve `needless_lifetimes` 2022-10-28 13:17:36 -04:00
Andre Bogus 7e68c718c0 fix the `string-extend-chars` suggestion on slice
This adds the missing `&` to the suggestion if the target is a
`str` slice (e.g. extending with `"foo"[..].chars()`).
2022-10-28 17:35:44 +02:00
Samuel Moelius c42626f969 Fix #9710 2022-10-28 08:53:06 -04:00
kraktus fa6850d888 [`bool_to_int_with_if`] do not lint in const context 2022-10-28 14:45:51 +02:00
bors 33137dd612 Auto merge of #9733 - nbdd0121:master, r=dswij
Ensure new_ret_no_self is not fired if impl Trait<Self> is returned.

Fix #7344: ensure new_ret_no_self is not fired if `impl Trait<Self>` is returned.

changelog: [`new_ret_no_self`]: No longer lints when `impl Trait<Self>` is returned
2022-10-28 06:26:49 +00:00
bors 43268141da Auto merge of #9726 - kraktus:fix_use_self, r=Alexendoo
[`use_self`] fix suggestion when full path to struct was given

Previously the following wrong suggestion was given

```rust
impl Error for std::fmt::Error {
    fn custom<T: std::fmt::Display>(_msg: T) -> Self {
-        std::fmt::Error // Should lint
+        Self::Error // Should lint
    }
}
```

Also remove known problem line related to #4140 since it's been closed, and refactor the lint

changelog: [`use_self`] fix suggestion when full path to struct was given
2022-10-27 22:08:07 +00:00
Alex ✨ Cosmic Princess ✨ 151395d74e
Update clippy_lints/src/suspicious_xor_used_as_pow.rs
Co-authored-by: NAKATA Takayuki <f.seasons017@gmail.com>
2022-10-27 21:32:36 +02:00
Gary Guo 92a119bc83 Add unit tests for issue 7344 2022-10-27 18:50:42 +01:00
Gary Guo e27e13c9ad Ensure new_ret_no_self is not fired if `impl Trait<Self>` is returned. 2022-10-27 18:49:07 +01:00
bors f5d225de37 Auto merge of #9722 - ebobrow:question-mark, r=Manishearth
`question_mark` don't lint on `if let Err` with `else`

cc #9518

AFAICT the only time this would be a valid suggestion is the rather esoteric

```rust
let _ = if let Err(e) = x {
    return Err(e);
} else {
    // no side effects
    x.unwrap()
}
```

which doesn't seem worth checking to me. Please correct me if I'm missing something.

changelog: [`question_mark`] don't lint on `if let Err` with `else`
2022-10-27 13:01:33 +00:00
bors 710999d941 Auto merge of #9728 - dswij:uninlined-fargs-pedantic, r=flip1995
move `UNINLINED_FORMAT_ARGS` to pedantic

As discussed in zulip, we are moving this lint to pedantic to be backported

changelog: [`UNINLINED_FORMAT_ARGS`]: move to pedantic
2022-10-27 12:37:28 +00:00
dswijj 14a34c2c61 move `UNINLINED_FORMAT_ARGS` to pedantic 2022-10-27 17:49:43 +08:00
bors 40af5be525 Auto merge of #9674 - smoelius:needless-borrow-fp, r=Jarcho
Fix `needless_borrow` false positive

The PR fixes the false positive exposed by `@BusyJay's` example in: https://github.com/rust-lang/rust-clippy/issues/9111#issuecomment-1277114280

The current approach is described in https://github.com/rust-lang/rust-clippy/pull/9674#issuecomment-1289294201 and https://github.com/rust-lang/rust-clippy/pull/9674#issuecomment-1292225232.

The original approach appears below.

---

The proposed fix is to flag only "simple" trait implementations involving references, a concept
that I introduce next.

Intuitively, a trait implementation is "simple" if all it does is dereference and apply the trait
implementation of a type named by a type parameter. `AsRef` provides a good example of a simple
implementation: https://doc.rust-lang.org/std/convert/trait.AsRef.html#impl-AsRef%3CU%3E-for-%26T

We can make this idea more precise as follows. Given a trait implementation, first determine
whether the implementation is "used defined." If so, then examine its nested obligations.
Consider the implementation simple if-and-only-if:
- there is at least one nested obligation for the same trait
- for each type `X` in the nested obligation's substitution, either `X` is the same as that of
  the original obligation's substitution, or the original type is `&X`

For example, the following implementation from `@BusyJay's` example is "complex" (i.e., not simple)
because it produces no nested obligations:

```rust
impl<'a> Extend<&'a u8> for A { ... }
```

On the other hand, the following slightly modified implementation is simple, because it produces
a nested obligation for `Extend<X>`:

```rust
impl<'a, X> Extend<&'a X> for A where A: Extend<X> { ... }
```

How does flagging only simple implementations help? One way of interpreting the false positive in
`@BusyJay's` example is that it separates a reference from a concrete type. Doing so turns a
successful type inference into a failing one. By flagging only simple implementations, we
separate references from type variables only, thereby eliminating this class of false positives.

Note that `Deref` is a special case, as the obligations generated for it already involve the
underlying type.

r? `@Jarcho` (Sorry to keep pinging you with `needless_borrow` stuff. But my impression is no one knows this code better than you.)

changelog: fix `needless_borrow` false positive
2022-10-27 05:59:56 +00:00
Samuel Moelius 83771c5242 Fix `needless_borrow` false positive 2022-10-26 19:34:53 -04:00
kraktus 1909a6af1a [`use_self`] fix suggestion when full path to struct was given
Previously the following wrong suggestion was given

```rust
impl Error for std::fmt::Error {
    fn custom<T: std::fmt::Display>(_msg: T) -> Self {
-        std::fmt::Error // Should lint
+        Self::Error // Should lint
    }
}
```

Also remove known problem line related to #4140 since it's been closed, and refactor the lint
2022-10-26 18:30:32 +02:00
bors 70187c7d11 Auto merge of #9717 - Alexendoo:readme-note, r=flip1995
Remove note mentioning configuration changes need cargo clean

Missed this in #9707

changelog: none
2022-10-26 08:35:42 +00:00