Commit Graph

10605 Commits

Author SHA1 Message Date
bors
ad9ceeebdc Auto merge of #6685 - magurotuna:filter_map_identity, r=phansch
Add new lint `filter_map_identity`

<!--
Thank you for making Clippy better!

We're collecting our changelog from pull request descriptions.
If your PR only includes internal changes, you can just write
`changelog: none`. Otherwise, please write a short comment
explaining your change.

If your PR fixes an issue, you can add "fixes #issue_number" into this
PR description. This way the issue will be automatically closed when
your PR is merged.

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`

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

Note that you can skip the above if you are just opening a WIP PR in
order to get feedback.

Delete this line and everything above before opening your PR.
-->

This commit adds a new lint named filter_map_identity.
This lint is the same as `flat_map_identity` except that it checks for the usage of `filter_map`.

---

Closes #6643

changelog: Added a new lint: `filter_map_identity`
2021-02-07 09:55:32 +00:00
bors
001185d863 Auto merge of #6681 - 1c3t3a:1c3t3a-issue-6467, r=xFrednet,flip1995,phansch
Adds a new lint that checks if there is a semicolon on the last block statement if it returns nothing

changelog: Added a new lint: `SEMICOLON_IF_NOTHING_RETURNED`
fixes #6467
Adds the `SEMICOLON_IF_NOTHING_RETURNED` lint and therefore closes #6467.
2021-02-07 08:53:52 +00:00
bors
d51db24132 Auto merge of #6660 - camsteffen:path-to-local, r=llogiq
Cleanup path-to-local checks

changelog: none

It seemed like too much ceremony going on to check if an expression matches a variable. So I created two util functions `path_to_local(Expr) -> Option<HirId>` and `path_to_local_id(Expr, HirId) -> bool` to make this easier, and used them wherever applicable.

I changed logic in a few places to use `HirId` instead of `Symbol` where it was easy to do so. I believe this is more correct and may even fix some bugs.

I also removed some calls to `qpath_res`. This is not needed if you are only looking for a `Res::Local`.

As a note, I wanted to name the util functions in a way that encourages understanding of the HIR.
2021-02-07 08:40:41 +00:00
bors
b36d1a4727 Auto merge of #6688 - rust-lang:triagebot_update, r=phansch
Update triagebot.toml to new label names

changelog: none
2021-02-07 08:24:50 +00:00
bors
d792210c26 Auto merge of #6682 - camsteffen:let-underscore-ref, r=llogiq
Fix let_underscore_drop FP

changelog: Fix let_underscore_drop false positives and negatives

Fixes #6633
2021-02-07 08:13:42 +00:00
Philipp Krones
dfe08f4e48
Update triagebot.toml to new label names 2021-02-06 23:56:08 +01:00
Cameron Steffen
40ce05654b Eat dogfood 2021-02-06 16:35:38 -06:00
Bastian Kersting
6b4789d7cf Fixed suggestion in macro invocations 2021-02-06 20:05:51 +01:00
Bastian Kersting
f1c15840a2 Changed lint level to restriction 2021-02-06 17:06:06 +01:00
Bastian Kersting
85c2b1e5f4 Switched to snippet_with_macro_callsite 2021-02-06 16:56:18 +01:00
Bastian Kersting
cd6748749a Revert "Fixed for loop problem, corrected all occurences that got linted"
This reverts commit 6626295fbc.
2021-02-06 16:44:57 +01:00
bors
dfb34c085f Auto merge of #6684 - matthiaskrgr:versiontest_dont_break_upstream, r=flip1995
tests: ignore check_that_clippy_has_the_same_major_version_as_rustc()inside the rustc repo

Do not check if clippy version matches rustc version when runnning tests inside the rustc repo.
This makes sure that upstream rustc maintainers do not have to deal with our test failing/mismatching versions
when the rustc version bump is happening.
cc #6683

We already do the "don't run inside the rustc-repo" workaround for the dogfood test:
a507c27660/tests/dogfood.rs (L16)

changelog: None
2021-02-06 13:38:36 +00:00
Bastian Kersting
6626295fbc Fixed for loop problem, corrected all occurences that got linted 2021-02-06 14:25:40 +01:00
Yusuke Tanaka
fbe436b1d4
Use flatten instead of filter_map 2021-02-06 18:06:58 +09:00
Yusuke Tanaka
a60c143fe0
Add new lint filter_map_identity
This commit adds a new lint named `filter_map_identity`. This lint is
the same as `flat_map_identity` except that it checks for `filter_map`.

Closes #6643
2021-02-06 18:03:14 +09:00
Matthias Krüger
93daf27a40 tests: ignore check_that_clippy_has_the_same_major_version_as_rustc() inside the rustc repo.
Do not check if clippy version matches rustc version when runnning tests inside the rustc repo.
This makes sure that upstream rustc maintainers do not have to deal with our test failing/mismatching versions
when the rustc version bump is happening.
cc #6683
2021-02-06 00:56:54 +01:00
Cameron Steffen
ac5e9c8d26 Fix let_underscore_drop implements Drop logic
This fixes false positives and false negatives.
2021-02-05 14:54:06 -06:00
Bastian Kersting
55bfaa12d3 Fixed macro edge case for semicolon_if_nothing_returned lint 2021-02-05 20:48:46 +01:00
Bastian Kersting
f907986580 Added documentation 2021-02-05 20:19:22 +01:00
Bastian Kersting
eb9c6698ee First version of the lint 2021-02-05 20:19:22 +01:00
bors
a507c27660 Auto merge of #6679 - flip1995:ra_setup_abs_path, r=Manishearth
Use absolute path to Rust repo in ra_setup

This will convert the path to the Rust repo to an absolute path. This is
important for the clippy_lints/Cargo.toml file. Otherwise if a relative
path is passed, rst-analyzer won't find the Rust repo, because it starts
the relative path search from the clippy_lints dir, not the
rust-clippy dir where the ra_setup command was run from.

changelog: none
2021-02-05 17:48:46 +00:00
bors
89f266a082 Auto merge of #6678 - TaKO8Ki:fix-typo, r=flip1995
Fix typo

This patch fixes a typo.

changelog: none
2021-02-05 17:16:50 +00:00
Cameron Steffen
56f7fbb4ae Cleanup path to local checks 2021-02-05 10:24:32 -06:00
flip1995
79dbf10736
Use absolute path to Rust repo in ra_setup
This will convert the path to the Rust repo to an absolute path. This is
important for the clippy_lints/Cargo.toml file. Otherwise if a relative
path is passed, rst-analyzer won't find the Rust repo, because it starts
the relative path search from the clippy_lints dir, not the
rust-clippy dir where the ra_setup command was run from.
2021-02-05 17:23:04 +01:00
Takayuki Maeda
67d48e1c59 fix typo 2021-02-06 00:10:52 +09:00
bors
357c6a7e27 Auto merge of #6646 - nahuakang:for_loops_over_options_or_results, r=flip1995
New Lint: Manual Flatten

This is a draft PR for [Issue 6564](https://github.com/rust-lang/rust-clippy/issues/6564).

r? `@camsteffen`

- \[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`

---

*Please write a short comment explaining your change (or "none" for internal only changes)*
changelog: Add new lint [`manual_flatten`] to check for loops over a single `if let` expression with `Result` or `Option`.
2021-02-04 10:03:45 +00:00
nahuakang
2f8a8d3468 Improve lint message; add note for future autofixable updates 2021-02-04 10:51:40 +01:00
nahuakang
78ef0f2f6c Add additional test cases and improve span lint 2021-02-03 21:54:38 +01:00
bors
876ffa4674 Auto merge of #6669 - magurotuna:fix-test-name, r=flip1995
Fix file names of flat_map_identity test

This patch fixes the file names of the `flat_map_identity` test.
Previously, their names were started with `unnecessary_flat_map` even though the lint rule name is `flat_map_identity`. This inconsistency happened probably because the rule name was changed during the discussion in the PR where this rule was introduced.

ref: https://github.com/rust-lang/rust-clippy/pull/4231

changelog: none
2021-02-03 15:39:37 +00:00
Yusuke Tanaka
6396b8fb7f
Fix file names of flat_map_identity test
This commit fixes the file names of the `flat_map_identity` test.
Previously, their names were started with `unnecessary_flat_map` even
though the lint rule name is `flat_map_identity`. This inconsistency
happened probably because the rule name was changed during the
discussion in the PR where this rule was introduced.

ref: https://github.com/rust-lang/rust-clippy/pull/4231
2021-02-04 00:06:26 +09:00
nahuakang
0f5e71f8f2 Add additional check on if arg type has iter method 2021-02-03 09:39:35 +01:00
bors
3e4179766b Auto merge of #6667 - Manishearth:rustup, r=Manishearth
Rustup

Pulling in AST changes

changelog: none
2021-02-03 04:09:03 +00:00
Manish Goregaokar
741259bece Merge branch 'sync-from-rust3' into rustup 2021-02-02 19:57:31 -08:00
Manish Goregaokar
a31e5f5f3b Run rustfmt 2021-02-02 19:57:08 -08:00
Manish Goregaokar
6fb10755c0 Rustup 2021-02-02 19:54:21 -08:00
Manish Goregaokar
5c957b8a6f Merge remote-tracking branch 'origin/master' into rustup 2021-02-02 16:46:12 -08:00
nahuakang
e07cd5b6fe Enhance manual flatten 2021-02-02 23:43:17 +01:00
Jack Huey
b56b751055 Rollup merge of #81260 - vn971:restore-editorconfig, r=Mark-Simulacrum
Add .editorconfig

This adds a .editorconfig file to rust-lang/rust, matching Clippy's. It's not clear that this will benefit many people, but the cost is low and the rewards are potentially meaningful.
2021-02-02 16:01:33 -05:00
bors
11edf92946 Auto merge of #6639 - xFrednet:0000-configuration-documentation-some-nits, r=flip1995
Updated some NITs in the documentation from #6630

I've implemented the two suggestions from #6630 that were added after the merge. This PR also changes the example code to use `register_*_pass` instead of `register_late_pass`. I'm not sure if this is better or worse, but it makes it clearer in my opinion. Let me know if I should change it back.

---

changelog: none

r? `@flip1995`
2021-02-02 18:05:35 +00:00
xFrednet
a2d2aeeb4b
Updated the list of active mentors 2021-02-02 18:53:15 +01:00
bors
448a97bf52 Auto merge of #81405 - bugadani:ast, r=cjgillot
Box the biggest ast::ItemKind variants

This PR is a different approach on https://github.com/rust-lang/rust/pull/81400, aiming to save memory in humongous ASTs.

The three affected item kind enums are:
 - `ast::ItemKind` (208 -> 112 bytes)
 - `ast::AssocItemKind` (176 -> 72 bytes)
 - `ast::ForeignItemKind` (176 -> 72 bytes)
2021-02-02 17:34:08 +00:00
Vasili Novikov
e05e477450 Add .editorconfig
Editorconfig is a lightweight specification that
helps maintaining consistent coding/formatting style
accross editors, especially those editors
that are not explicitly aware of Rust and rustfmt.

https://editorconfig.org/
2021-02-02 18:13:18 +01:00
bors
9fd4f3ea8f Auto merge of #6664 - camsteffen:path-to-res, r=Manishearth
Remove Option from `path_to_res` return type

changelog: none

Tiny cleanup for `path_to_res` to return `Res` instead of `Option<Res>`.
2021-02-02 16:56:39 +00:00
bors
28794e956e Auto merge of #6523 - brightly-salty:missing-panic-doc, r=flip1995
Add new lint "missing_panics_doc"

fixes #1974
changelog: Added the "missing_panics_doc" lint which lints when public functions that may panic are missing "# Panics" in their doc comment
2021-02-02 15:37:24 +00:00
Caden Haustein
bde667af7e
Add missing_panics_doc lint 2021-02-02 16:36:32 +01:00
bors
f870876d92 Auto merge of #6659 - phlip9:let_and_return_fix, r=phansch
Fix let_and_return false positive

The issue:

See this Rust playground link: https://play.rust-lang.org/?edition=2018&gist=12cb5d1e7527f8c37743b87fc4a53748

Run the above with clippy to see the following warning:

```
warning: returning the result of a `let` binding from a block
  --> src/main.rs:24:5
   |
23 |     let value = Foo::new(&x).value();
   |     --------------------------------- unnecessary `let` binding
24 |     value
   |     ^^^^^
   |
   = note: `#[warn(clippy::let_and_return)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
help: return the expression directly
   |
23 |
24 |     Foo::new(&x).value()
   |
```

Implementing the suggested fix, removing the temporary let binding,
yields a compiler error:

```
error[E0597]: `x` does not live long enough
  --> src/main.rs:23:14
   |
23 |     Foo::new(&x).value()
   |     ---------^^-
   |     |        |
   |     |        borrowed value does not live long enough
   |     a temporary with access to the borrow is created here ...
24 | }
   | -
   | |
   | `x` dropped here while still borrowed
   | ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `Foo`
   |
   = note: the temporary is part of an expression at the end of a block;
           consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
   |
23 |     let x = Foo::new(&x).value(); x
   |     ^^^^^^^                     ^^^
```

The fix:

Of course, clippy looks like it should already handle this edge case;
however, it appears `utils::fn_def_id` is not returning a `DefId` for
`Foo::new`. Changing the `qpath_res` lookup to use the child Path
`hir_id` instead of the parent Call `hir_id` fixes the issue.

changelog: none
2021-02-02 15:04:35 +00:00
bors
8d82ac5e73 Auto merge of #6661 - Manishearth:exhaustive-fix, r=flip1995
exhaustive_structs: don't trigger for structs with private fields

changelog: Restrict `exhaustive_structs` to structs with all-public
fields
2021-02-02 07:59:39 +00:00
Philipp Krones
4a13c8c22e
Fix test formatting 2021-02-02 08:59:23 +01:00
Manish Goregaokar
0fb09d6b21 exhaustive_structs: don't trigger for structs with private fields 2021-02-01 18:42:08 -08:00
nahuakang
b87e189694 Implement manual flatten lint 2021-02-01 16:58:31 +01:00