Commit graph

8106 commits

Author SHA1 Message Date
Nick Torres
acc3bc1ba2 result_map_or_into_option: move arg checks into tuple assignment 2020-04-04 14:24:22 -07:00
Nick Torres
fb276dc3fa result_map_or_into_option: add opt.map_or(None, |_| Some(y)) test 2020-04-04 14:16:26 -07:00
Nick Torres
d0738bd673 result_map_or_into_option: destructure lint tuple or return early 2020-04-04 14:16:23 -07:00
Nick Torres
3a29aedf8d result_map_or_into_option: add good and bad examples 2020-04-04 14:16:18 -07:00
Nick Torres
91759a7582 result_map_or_into_option: explicitly note absence of known problems 2020-04-04 14:16:11 -07:00
Nick Torres
91d8a804d3 result_map_or_into_option: add lint to catch manually adpating Result -> Option
Result<T, E> has an `ok()` method that adapts a Result<T,E> into an Option<T>.
It's possible to get around this adapter by writing Result<T,E>.map_or(None, Some).

This lint is implemented as a new variant of the existing
[`option_map_none` lint](https://github.com/rust-lang/rust-clippy/pull/2128)
2020-04-04 03:17:13 -07:00
Manish Goregaokar
7907abea27
Merge pull request #5407 from flip1995/rustup
Rustup to rust-lang/rust#70634
2020-04-03 10:47:20 -07:00
flip1995
98aa5938c4
Rustup to rust-lang/rust#70634 2020-04-02 22:29:41 +02:00
bors
949a5bab33 Auto merge of #5403 - farnz:patch-1, r=flip1995
Improve docs for option_option

Hint about using tri-state enums to replace legitimate uses of `Option<Option<_>>`

changelog: The docs for `option_option` now suggest using a tri-state enum
2020-04-02 13:39:30 +00:00
Simon Farnsworth
5f8b696e2e
Update clippy_lints/src/types.rs
Co-Authored-By: Philipp Krones <hello@philkrones.com>
2020-04-02 14:30:13 +01:00
Simon Farnsworth
50ecc12541
Update types.rs 2020-04-02 14:29:08 +01:00
Simon Farnsworth
f3f1babc1b
Update types.rs 2020-04-02 14:28:25 +01:00
Simon Farnsworth
db3423f46a
Improve docs for option_option
Hint about using tri-state enums to replace legitimate uses of `Option<Option<_>>`
2020-04-02 10:03:15 +01:00
bors
a840d594cc Auto merge of #5349 - jpospychala:useless_rc, r=Manishearth
useless Rc<Rc<T>>, Rc<Box<T>>, Rc<&T>, Box<&T>

refers to  #2394

changelog: Add lints for Rc<Rc<T>> and Rc<Box<T>> and Rc<&T>, Box<&T>

this is based on top of another change #5310 so probably should go after that one.
2020-04-02 03:11:29 +00:00
Jacek Pospychala
f8e892db5e useless Rc<Rc<T>>, Rc<Box<T>>, Rc<&T>, Box<&T> 2020-04-02 00:02:25 +02:00
bors
7ebb3aa55d Auto merge of #5402 - pmk21:allow-let-underscore-must-use, r=flip1995
Allow let_underscore_must_use to be ignored

changelog: none
Fixes #5366
2020-04-01 21:43:44 +00:00
bors
42796e11c5 Auto merge of #5401 - dtolnay:option, r=Manishearth
Downgrade option_option to pedantic

Based on a search of my work codebase (\>500k lines) for `Option<Option<`, it looks like a bunch of reasonable uses to me. The documented motivation for this lint is:

> an optional optional value is logically the same thing as an optional value but has an unneeded extra level of wrapping

which seems a bit bogus in practice. For example a typical usage would look like:

```rust
let mut host: Option<String> = None;
let mut port: Option<i32> = None;
let mut payload: Option<Option<String>> = None;

for each field {
    match field.name {
        "host" => host = Some(...),
        "port" => port = Some(...),
        "payload" => payload = Some(...), // can be null or string
        _ => return error,
    }
}

let host = host.ok_or(...)?;
let port = port.ok_or(...)?;
let payload = payload.ok_or(...)?;
do_thing(host, port, payload)
```

This lint seems to fit right in with the pedantic group; I don't think linting on occurrences of `Option<Option<T>>` by default is justified.

---

changelog: Remove option_option from default set of enabled lints
2020-04-01 21:30:24 +00:00
pmk21
c9978b69bd Allow let_underscore 2020-04-02 00:48:16 +05:30
David Tolnay
f6e8da81f1
Update option_option ui test 2020-04-01 12:15:39 -07:00
pmk21
97acabe56a Test for ignoring let_underscore_must_use 2020-04-02 00:44:09 +05:30
David Tolnay
86b0dd4197
Downgrade option_option to pedantic 2020-04-01 12:00:49 -07:00
bors
326b22048a Auto merge of #5400 - flip1995:rustup, r=Manishearth
Rustups

r? @Manishearth

changelog: none
2020-04-01 18:51:38 +00:00
flip1995
fcc56fcd1b
Fix dogfood fallout 2020-04-01 20:24:46 +02:00
flip1995
7d58ba20b4
Rustup to rust-lang/rust#70632 2020-04-01 20:14:05 +02:00
flip1995
63987aafba
Rustup to rust-lang/rust#70081 2020-04-01 20:12:36 +02:00
flip1995
3142ee3f7a
Rustup to rust-lang/rust#70627 2020-04-01 19:42:15 +02:00
bors
c211cea3e9 Auto merge of #5398 - flip1995:deescalate, r=Manishearth
Stop updating the lint counter with every new lint

r? @Manishearth

This PR does two things:

1. Clean up the clippy_dev module a bit (first 3 commits; cc #5394 )
2. Make the counter in the README count in steps of 50 lints. Also use a `lazy_static` `Vec` for the lint list, so no counter is required there anymore.

changelog: none
2020-03-31 15:36:54 +00:00
flip1995
cbdf4cc71e
Run update_lints 2020-03-31 17:24:09 +02:00
flip1995
3155eedb68
Don't use an exact lint counter anymore 2020-03-31 17:24:09 +02:00
flip1995
5de019074b
Move update_lints logic to its own module 2020-03-31 17:24:09 +02:00
flip1995
deb1979b8e
Make limit_stderr_length a subcommand 2020-03-31 17:24:09 +02:00
flip1995
8b9d70d349
Define modules in lib.rs instead of main.rs 2020-03-31 17:24:09 +02:00
bors
09fe163c92 Auto merge of #5397 - pmk21:macro-single-match, r=flip1995
Avoid single_match lint in macro rules

changelog: none
fixes #5359
2020-03-31 11:45:43 +00:00
pmk21
79ab05458f Small formatting change 2020-03-31 16:13:51 +05:30
pmk21
4cac9786c5 Skip single_match lints in macro rules 2020-03-31 15:50:15 +05:30
pmk21
793403a2a8 Added test for single_match_else in macro 2020-03-31 15:49:49 +05:30
pmk21
ba6a3280f5 Added test for single_match in macro 2020-03-31 15:49:27 +05:30
bors
1cac2f9e86 Auto merge of #5293 - matthiaskrgr:macro_skip_lifetime, r=phansch
don't emit lifetime lint warnings for code inside macros.

Fixes #5283

changelog: Don't emit lifetime lint warnings for code inside macros.
2020-03-30 21:33:49 +00:00
Matthias Krüger
8e83afa61f don't emit lifetime lints for code inside macros.
Fixes #5283
2020-03-30 23:22:50 +02:00
bors
0a25944f78 Auto merge of #5294 - tmiasko:trait-ptr-cmp, r=Manishearth
Lint unnamed address comparisons

Functions and vtables have an insignificant address. Attempts to compare such addresses will lead to very surprising behaviour. For example: addresses of different functions could compare equal; two trait object pointers representing the same object and the same type could be unequal.

Lint against unnamed address comparisons to avoid issues like those in rust-lang/rust#69757 and rust-lang/rust#54685.

changelog: New lints: [`fn_address_comparisons`] [#5294](https://github.com/rust-lang/rust-clippy/pull/5294), [`vtable_address_comparisons`] [#5294](https://github.com/rust-lang/rust-clippy/pull/5294)
2020-03-30 19:52:41 +00:00
Tomasz Miąsko
b77b219280 Lint unnamed address comparisons 2020-03-30 21:42:16 +02:00
bors
42c36dc77b Auto merge of #5365 - mgr-inz-rafal:issue4983_bool_updates, r=yaahc
Issue4983 bool updates

changelog: Check for bool inequality comparison that might be written more concisely

Fixes #4983
2020-03-30 19:20:10 +00:00
Jane Lusby
c8f3241177
Update clippy_lints/src/needless_bool.rs 2020-03-30 12:19:30 -07:00
bors
3e1dd20230 Auto merge of #5373 - flip1995:doc_release_backport, r=Manishearth
Document how to create releases and backports

This PR adds documentation on how to create Clippy releases and backports.

This PR also introduces a new backport/release process for Clippy:

- A beta branch is introduced: https://github.com/rust-lang/rust-clippy/tree/beta
- Backports are now done by PRs to the `beta` branch
- also commits to the beta branch will be deployed, so that the documentation page has a tab for the Clippy beta release.

This has two advantages:

1. The Clippy release process is closer to the Rust release process: stable releases are tagged, the beta release has its own branch
2. Backports to beta are easier, since they don't need as much coordination as before. No new branch has to be created for a backport. Just a PR to the beta branch, like in the Rust repo.¹

I tested the deployment here: https://github.com/flip1995/rust-clippy/runs/534465081 and it created this commit: 734503377e, so it works.

r? @Manishearth your thoughts?

[Rendered (release.md)](https://github.com/flip1995/rust-clippy/blob/doc_release_backport/doc/release.md)
[Rendered (backport.md)](https://github.com/flip1995/rust-clippy/blob/doc_release_backport/doc/backport.md)

changelog: none

---

¹: For this, we may have to modify the CI, so that beta rustc is used to check PRs to beta (or we test it locally, and merge it without bors)
2020-03-30 18:53:05 +00:00
bors
563da5248d Auto merge of #5387 - jpospychala:useless_self_fp, r=yaahc
`unused_self` false positive

fixes #5351

Remove the for loop in `unused_self` so that lint enabled for one method doesn't trigger on another method.

changelog: Fix false positive in `unused_self` around lint gates on impl items
2020-03-30 18:10:21 +00:00
Philipp Krones
2a4493aaa6
Fix typo in release.md
Co-Authored-By: Phil Hansch <dev@phansch.net>
2020-03-30 19:32:48 +02:00
bors
e170c84942 Auto merge of #5392 - matthiaskrgr:rustup_40, r=phansch
rustup  https://github.com/rust-lang/rust/pull/70536

changelog: none
2020-03-30 13:22:34 +00:00
Matthias Krüger
aff57e0f43 rustup https://github.com/rust-lang/rust/pull/70536 2020-03-30 11:17:58 +02:00
bors
bfd11235a6 Auto merge of #5380 - lzutao:deprecate-REPLACE_CONSTS, r=phansch
Deprecate REPLACE_CONSTS lint

Closes #5346
changelog: Deprecate `replace_consts` lint
2020-03-30 08:03:42 +00:00
bors
0254c421f9 Auto merge of #5390 - phansch:rustupp, r=matthiaskrgr
Rustup to https://github.com/rust-lang/rust/pull/70449

cc https://github.com/rust-lang/rust/pull/70449

changelog: none
2020-03-30 07:31:25 +00:00